public static void Main()
Client client = new Client();
client.Do(new DuckCreator());
client.Do(new DogCreator());
public void Do(ICreator creator){
public interface ICreator
IProduct CreateProduct();
public class DuckCreator : ICreator
public IProduct CreateProduct() {
return new DuckProduct();
public class DogCreator : ICreator
public IProduct CreateProduct() {
public interface IProduct{
public class DuckProduct : IProduct {
Console.WriteLine("Duck is created!");
public class DogProduct : IProduct {
Console.WriteLine("Dog is created!");