Рубрики
Без рубрики

Шаблон дизайна: Заводской шаблон

Шаблон фабрики определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс класса… Помечено шаблоном дизайна, информатикой, codenewbie, java.

Шаблон фабрики определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс создавать. Фабричный метод позволяет классу отложить создание экземпляра для подклассов.

Например, давайте посмотрим на эту диаграмму

  • Связь между продуктом и конкретным продуктом заключается в том, что все продукты должны реализовывать один и тот же интерфейс продукта
  • “Создатель бетона” отвечает за создание одного или нескольких бетонных изделий
  • Абстрактный “Фабричный метод()” – это то, что должны реализовать все подклассы создателей

Q) Так, что пытается сказать нам здесь диаграмма?

  • Это говорит нам о том, что мы должны зависеть от абстракций, а не от конкретных классов (принцип инверсии зависимостей). Помнишь? Фабричный шаблон, опять же, определяет интерфейс для создания объекта, а его подклассы решают, какой класс создавать. Таким образом, D.I.P и фабричный шаблон идут рука об руку.
  • Несколько ключевых моментов Принципа инверсии зависимостей, которые следует запомнить:
    • Никакие переменные не должны содержать ссылку на конкретный класс
    • Ни один класс не должен быть производным от конкретного класса
    • Ни один метод не должен переопределять реализованный метод любого из его базовых классов

Абстрактный Фабричный Узор

Это версия заводского шаблона, но более абстрактная. Этот шаблон предоставляет интерфейс (абстрактный тип) для создания семейств связанных или зависимых объектов без указания их конкретных классов.

Подклассы этого типа определяют, как производятся эти продукты. Чтобы использовать фабрику, создайте ее экземпляр и передайте его в какой-нибудь код, написанный для абстрактного типа. Группа объединяет набор связанных продуктов (может быть большим интерфейсом), и интерфейс должен изменяться при добавлении новых продуктов.

Пример диаграммы

Резюме

Поначалу может быть немного сложно определить, что отличает эти два паттерна друг от друга. Просто знайте эти две вещи:

  • Шаблон фабричного метода откладывает создание экземпляров для своих подклассов через наследование ; делегировать создание объектов подклассам
  • Шаблон Абстрактной фабрики предоставляет абстрактный тип для создания СЕМЕЙСТВА продуктов посредством композиции объектов .

    • Если вы не знакомы с композицией объектов, ознакомьтесь с моей позицией на Шаблон Стратегии

Оригинал: “https://dev.to/danlee0528/design-pattern-factory-pattern-ff4”