Example #1
0
        static void Main(string[] args)
        {
            // Проблема:
            // SimpleProduct sproduct = new SimpleProduct();
            // sproduct.DoSomething();

            // Если по каким-либо причинам, SimpleProduct изменится, то придётся менять все обращения к SimpleProduct по всему проекту.
            // В данном примере вызов один, но вдруг их будет 20? Каждый раз менять 20 мест?
            // К тому же жизненный цикл даного объекта контролируется на клиенте.
            // ...
            // Не стоит так делать, создадим отдельный класс для формирования продукта
            Factory simpleFactory = new SimpleFactory();

            // Создадим продукт с помощью фабричного метода
            AbstractProduct aproduct = simpleFactory.CreateProduct(ProductType.ProductA);

            aproduct.DoSomething();

            AbstractProduct bproduct = simpleFactory.CreateProduct(ProductType.ProductB);

            bproduct.DoSomething();

            AbstractProduct nproduct = simpleFactory.CreateProduct(ProductType.ProductN);

            nproduct.DoSomething();

            // Вуаля, подробности создания объекта скрыты
            Console.ReadLine();
        }
Example #2
0
        static void Main(string[] args)
        {
            Factory factory = new Factory();

            AbstractProduct productA = factory.generateInstance(ProductType.ProductA);

            productA.showMessage();
            AbstractProduct productB = factory.generateInstance(ProductType.ProductB);

            productB.showMessage();

            Console.Read();
        }