ОпределениеФабричный метод (Factory Method) - это паттерн, который определяет интерфейс для создания объектов некоторого класса, но непосредственное решение о том, объект какого класса создавать происходит в подклассах.
Слайд 2
Определение Фабричный метод (Factory Method) - это паттерн, который
определяет интерфейс для создания объектов некоторого класса, но непосредственное
решение о том, объект какого класса создавать происходит в подклассах.
Слайд 3
Задачи Система должна оставаться расширяемой путем добавления объектов новых
типов. Непосредственное использование выражения new является нежелательным, так как
в этом случае код создания объектов с указанием конкретных типов может получиться разбросанным по всему приложению. Тогда такие операции как добавление в систему объектов новых типов или замена объектов одного типа на другой будут затруднительными Паттерн Factory Method позволяет системе оставаться независимой как от самого процесса порождения объектов, так и от их типов. Заранее известно, когда нужно создавать объект, но неизвестен его тип.
Слайд 4
Описание паттерна Factory Method Механизм полиморфизм (определение единого интерфейса); Создание
объектов конкретных типов в специальном классе-фабрике: Обобщенный конструктор; Классический вариант фабричного
Слайд 6
Когда надо применять паттерн Когда заранее неизвестно, объекты каких
типов необходимо создавать Когда система должна быть независимой от процесса
создания новых объектов и расширяемой: в нее можно легко вводить новые классы, объекты которых система должна создавать. Когда создание новых объектов необходимо делегировать из базового класса классам наследникам
Слайд 7
Достоинства позволяет сделать код создания объектов более универсальным, не
привязываясь к конкретным классам (ConcreteProduct), а оперируя лишь общим
интерфейсом (Product); позволяет установить связь между параллельными иерархиями классов.
необходимость создавать наследника Creator для каждого нового типа продукта (ConcreteProduct).
Недостатки
Слайд 8
Формальное определение паттерна на языке C#