Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Паттерны (3).pptx
Скачиваний:
25
Добавлен:
22.03.2023
Размер:
5.4 Mб
Скачать

Factory Method

Название и классификация паттерна

Фабричный метод - паттерн, порождающий классы.

Назначение

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

Известен также под именем

Virtual Constructor (виртуальный конструктор).

21

Factory Method - проблема

Factory Method - решение

Factory Method - решение

Factory Method - структура

Factory Method - участники

Product (Document) - продукт:

- определяет интерфейс объектов, создаваемых фабричным методом;

ConcreteProduct (MyDocument) - конкретный продукт:

- реализует интерфейс Product;

Creator (Application) - создатель:

- объявляет фабричный метод, возвращающий объект типа Product.

Creator может также определять реализацию по умолчанию фабричного метода, который возвращает объект ConcreteProduct;

- может вызывать фабричный метод для создания объекта Product.

ConcreteCreator (MyApplication) - конкретный создатель:

- замещает фабричный метод, возвращающий объект ConcreteProduct.

26

Factory Method – преимущества и недостатки

Преимущества

Избавляет класс от привязки к конкретным классам продуктов.

Выделяет код производства продуктов в одно место, упрощая поддержку кода.

Упрощает добавление новых продуктов в программу.

Реализует принцип открытости/закрытости.

Недостатки

Может привести к созданию больших

параллельных иерархий к лассов

, так как для каждого класса продукта надо создать свой подкласс создателя.

ПАТТЕРН ABSTRACT FACTORY

Abstract Factory

Название и классификация паттерна

Абстрактная фабрика - паттерн, порождающий объекты.

Назначение

Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.

Известен также под именем

Kit (инструментарий).

29

Abstract Factory - проблема

Соседние файлы в папке Лекции