//O codigo do Cliente trabalha com uma instância do Concrete Creator, embora através de sua interface base. //Enquanto o Client continuar trabalhando com o creator via interface base, você pode passar qualquer subclasse //do creator. public void ClientCode(Criador creator) { //.. Console.WriteLine("Cliente: Eu não sei como a classe Creator funciona," + "mas tudo funciona mesmo assim.\n" + creator.SomeOperation()); //.. }
static void Main() { var criadores = new Criador[2]; criadores[0] = new CriadorA(); criadores[1] = new CriadorB(); foreach (var criador in criadores) { var produto = criador.FactoryMethod(); Console.WriteLine("Criado {0}", produto.GetType().Name); } Console.Read(); }