Фабричний метод (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