Please enable JavaScript.
Coggle requires JavaScript to display documents.
Порождающие патерны
паттерн (Абстрактная фабрика (abstact factory)…
Порождающие патерны
-
Строитель (builder)
Цель
Отделяет конструирование сложного объекта от его представления, так что в результате одного и того же процесса конструирования могут получаться разные представления.
Достоинтсва
позволяет изменять внутреннее представление продукта;
изолирует код, реализующий конструирование и представление;
дает более тонкий контроль над процессом конструирования
Недостатки
Требуется создание отдельного ConcreteBuilder для каждого типа продукта.
Требует, чтобы классы строителей были изменяемыми.
Внедрение зависимостей может быть менее поддерживаемым.
Применение
алгоритм создания сложного объекта не должен зависеть от того, из каких частей состоит объект и как они стыкуются между собой;
процесс конструирования должен обеспечивать различные представления конструируемого объекта.
Фабричный метод (factory method)
Цель
Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс интонировать
Недостатки
-
Достоинтсва
позволяет сделать код создания объектов более универсальным, не привязываясь к конкретным классам (ConcreteProduct), а оперируя лишь общим интерфейсом (Product);
позволяет установить связь между параллельными иерархиями классов.
Применения
классу заранее неизвестно, объекты каких подклассов ему нужно создавать.
класс спроектирован так, чтобы объекты, которые он создаёт, специфицировались подклассами.
класс делегирует свои обязанности одному из нескольких вспомогательных подклассов, и планируется локализовать знание о том, какой класс принимает эти обязанности на себя.
Прототип (prototype)
Недостатки
Сложно клонировать составные объекты, имеющие ссылки на другие объекты.
Цель
Задаёт виды создаваемых объектов с помощью экземпляра-прототипа и создаёт новые объекты путём копирования этого прототипа.
Применения
• инстанцируемые классы определяются во время выполнения, например с помощью динамической загрузки;
• для того чтобы избежать построения иерархий классов или фабрик, параллельных иерархии классов продуктов;
-
достоинтсва
Позволяет клонировать объекты, не привязываясь к их конкретным классам.
-
-
-