Образец абстрактного дизайна фабрики-изготовителя.
Намерения:
- Получает внутренность для изобретения семейств родственных или не основных объектов без получения данных об каких-то определенных классов.
- Порядок, который включает в себя: большое количество возможных "путей" и изобретения списка "товаров".
Проблема:
Если вложение может быть переносным, оно должно инкапсулировать зависимости от платформы. К таким "платформам" могут относиться: оконная система, операционная система, основа данных и т.д. Такая инкапсуляция не проектируется заранее, и множество команд с опциями для всех поддерживаемых платформ начинают размножаться, как кролики, по всему коду.
Обсуждение:
Обеспечить такой уровень направленности, который будет обострять изобретение семейств: родственных или не основных объектов, без указания тех самых классов. Объект "Завод" ответственный за предоставление услуг по изобретению всей линейки путей. Люди никогда не делают объекты путей самостоятельно напрямую, они требуют заводы, чтобы они изобрели это за них. Эта совокупность упрощает обмен семьями продуктов, так как специфический класс заводского субъекта появляется 1 раз в приложении - там, где он инстанцируется. Приложение может оптом заменить все семейство продуктов, просто приведя в качестве примера другой конкретный образ.
Структура:
Завод определяет самый подходящий метод для каждого продукта. Каждый заводской метод включает в себя нового диспетчера и нужные, правильные для путя, классы изделий. Каждый "путь" позже производится с помощью класса, производного от фабрики.
Частный случай:
Объектом создания теоретического завода будет снабжением внутреннего вида для изобретения семейств родственных частей, без показаний точных классов. Та закономерность прослеживается на установке для производства металлических листов, используемых при производстве японских автомобилей. Штамповочное оборудование - это абстрактный завод, который производит автозапчасти для кузова. Эта же техника пользуется спросом для производства правосторонних дверей, левосторонних дверей, правосторонних передних крыльев, левосторонних крыльев, капотов и т.д. для различных образцов автотехники. При помощи роликов для изменения штамповочных форм, и бетонные классы, производимые машинами, могут быть изменены в течение трех минут.
Контрольный список:
- Определите, являются ли "независимость платформы" и услуги по созданию являются в настоящее время источником боли.
- Составьте матрицу из "платформ" и "продуктов".
- Определите заводской интерфейс, состоящий из заводского метода для каждого продукта.
- Определите заводской класс для каждого вида, который инкапсулирует все переходы на новый оператор.
- Потребитель может уничтожить все переходы на новые и пользоваться заводскими методами для изобретения объектов продукта.
Практические правила:
Иногда творческие модели являются конкурентами: происходят случаи, когда тот прототип, или та абстрактная фабрика могут быть выгодно применены. В других примерах они добавляют каждого: фабрика может держать в себе набор прототипов для клонирования и возврата объектов продукта, строитель может пользоваться одним из других шаблонов для исполнения этого. Абстрактный завод, конструктор и прототип могут использовать синглтон в своем осуществлении.
Все эти вышеописанные виды будет определять заводской объект, который организует знание и создание классов и объектов продукта, и сделают его одним из параметров системы. Абстрактный завод имеет заводской объект, выпускающий объекты нескольких классов. Застройщик имеет заводской объект, постепенно создающий сложный продукт с использованием правильного тяжелого протокола. Экземпляр имеет заводской объект (также известный как прототип), изготавливающий изделие путем копирования объекта-экземпляра.
Заводские классы часто реализуются с использованием заводских методов, но они так же возможны в осуществлении с помощью использования прототипа.
Завод иногда используется как альтернатива фасаду, чтобы скрыть специфические для платформы классы.
Строитель фокусируется на пошаговом построении сложного объекта. Фабрика выделяет семейство продуктовых субъектов (простых или сложных). Застройщик возвращает продукт в качестве заключительного шага, но что касается Абстрактного завода, то продукт возвращается немедленно.
Часто проектирование начинается с заводского метода (менее тяжелый, более легкий в эксплуатации, и тем самым по этой причине, подклассы будут расти) и развивается в сторону абстрактного завода, экземпляра или застройщика (более тонкий, более тяжелый), как выясняет дизайнер, где требуется большая гибкость.