Beispiel #1
0
        /// <summary>
        /// Демо паттернов "Фабрика" (не является полноценным паттерном), "Фабричный метод" и "Абстрактная фабрика".
        /// </summary>
        public void DemoFactory()
        {
            // "Фабрика" (не является полноценным паттерном)
            var dashboard = new Dashboard(new WidgetFactory());

            dashboard.AddWidget("pie");

            // Фабричный метод
            // Паттерн «Фабричный метод» отвечает за создание объектов и инкапсулирует эту операцию в субклассе.
            // Таким образом клиетский код в базовом класссе отделяется от кода создания объекта в классе-наследнике.
            var gamingStore = new GamingComputerStore();

            gamingStore.OrderComputer("budget");

            var officeStore = new OfficeComputerStore();

            officeStore.OrderComputer("top");

            // Абстрактная фабрика
            // Паттерн «Абстрактная фабрика» представляет интерфейс создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов.
            // На основе абстрактной фабрики создаются одни или более конкретных фабрик, производящих одинаковые объекты, но с разными реализациями.
            // Это означает, что абстрактная фабрика определяет интерфейс для создания семейства объектов.
            var gamingStore1 = new AbstractFactory.GamingComputerStore();

            gamingStore1.OrderComputer("budget");
            var officeStore1 = new AbstractFactory.OfficeComputerStore();

            officeStore1.OrderComputer("top");
        }