Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Введение в архитектуру программного обеспечения

Обсуждение порождающих паттернов

Есть два наиболее распространенных способа параметризовать систему классами создаваемых ей объектов. Первый способ — порождение подклассов от класса, создающего объекты. Он соответствует паттерну Фабричный метод. Основной недостаток метода: требуется создавать новый подкласс лишь для того, чтобы изменить класс продукта. И таких изменений может быть очень много.

Другой способ основан на композиции объектов. Вы определяете объект, которому известно о классах объектов-продуктов, и делаете его параметром системы. Это ключевой аспект таких паттернов, как Абстрактная фабрика, Строитель и Прототип. Для всех трех характерно создание «фабричного объекта», который изготавливает продукты.

В абстрактной фабрике фабричный объект производит объекты разных классов.

Фабричный объект Строителя постепенно создает сложный продукт, следуя специальному протоколу. Фабричный объект Прототипа изготавливает продукт путем копирования объекта-прототипа. В последнем случае фабричный объект и прототип — это одно и то же, поскольку именно прототип отвечает за возврат продукта.

Выбор паттерна зависит от многих факторов. В случае применения паттерна Фабричный метод проект в большей степени поддается настройке. Другие паттерны нуждаются в создании новых классов, а фабричный метод — только в создании одной новой операции. Часто этот паттерн рассматривается как стандартный способ создания объектов, но вряд ли его стоит рекомендовать в ситуации, когда инстанцируемый класс никогда не изменяется или когда инстанцирование выполняется внутри операции, которую легко можно заместить в подклассах (например, во время инициализации).

Проекты, в которых используются паттерны Абстрактная фабрика, Прототип или Строитель, оказываются еще более гибкими, чем те, где применяется Фабричный метод, но за это приходится платить повышенной сложностью. Часто в начале работы над проектом за основу берется Фабричный метод, а позже, когда проектировщик обнаруживает, что решение получается недостаточно гибким, он выбирает другие паттерны. Владение разными паттернами проектирования открывает перед вами широкий выбор при оценке различных критериев.

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Пред   СОДЕРЖАНИЕ   След >
 

Популярные страницы