/// <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"); }