Фабричний метод (Factory Method)

Дає можливість використовувати одну і ту ж функцію для створення різних об'єктів, що наслідуються від базового класу

        abstract class Product

        { }

        class ProductA : Product

        {

            public ProductA()

            {

                Console.WriteLine("A is created");

            }

        }

        class ProductB : Product

        {

            public ProductB()

            {

                Console.WriteLine("B is created");

            }

        }

        abstract class Creator

        {

            public abstract Product FactoryMethod();

        }

        class CreatorA : Creator

        {

            public override Product FactoryMethod() { return new ProductA(); }

        }

        class CreatorB : Creator

        {

            public override Product FactoryMethod() { return new ProductB(); }

        }

        static void Main(string[] args)

        {

            Creator cr = new CreatorA();

            Product a = cr.FactoryMethod();

            cr = new CreatorB();

            Product b = cr.FactoryMethod();

            Console.ReadKey();

        }

A is created

B is created