using System.Collections.Generic;
namespace Creational.FactoryMethod
public static void Main()
Console.WriteLine("Hello World");
Movie[] movies = new Movie[2];
movies[0] = new FunnyMovie();
movies[1] = new SeriousMovie();
foreach( Movie myMovie in movies)
Actor myActor = myMovie.FactoryMethod();
Console.WriteLine(myActor.ToString());
public abstract class Movie
public abstract Actor FactoryMethod();
public class FunnyMovie: Movie
public override Actor FactoryMethod()
public class SeriousMovie : Movie
public override Actor FactoryMethod()
return new TragedyStar();
public abstract class Actor
public class Comedian : Actor
public class TragedyStar : Actor