Если задача сформулирована в связи с развитием программного продукта, то следует уточнить предлагаемое решение в форме рекомендуемых паттернов программирования.
8.1. Если нужно устранить вредную связь:
Если один элемент (создатель) содержит алгоритм создания второго элемента и при этом:
– Нужно заменять порождаемый элемент без изменения создателя. Фабричный метод
– Нужно заменять семейство порождаемых элементов без изменения создателя. Абстрактная фабрика
– Алгоритм создания элемента не должен зависеть от того, из каких частей и в какой их комбинации состоит порождаемый элемент. Строитель
Интерфейс одного элемента не должен зависеть от интерфейса второго. Адаптер.
Нужно создавать элемент/получать к нему доступ только в конкретных случаях. Заместитель.
Нужно одинаково обращаться к элементам, не зависимо, являются они простыми и составными. Компоновщик
Нужно отделить абстракцию элемента от реализации. Мост
Нужно снизить зависимость между подсистемами. Фасад
Нужно обеспечить слабую связанность между элементами системы. Посредник
Нужно избежать связи между отправителем запроса и получателем. Цепочка обязанностей
8.2. Если нужно повысить эффективность:
Если один элемент (создатель) содержит алгоритм создания второго элемента и при этом:
– Нужно переопределить алгоритмы создания элементов в элементах-потомках. Фабричный метод
– Нужно переопределить алгоритмы создания семейств элементов в элементах-потомках. Абстрактная фабрика
– Нужно гарантировать, что элемент создан в единственном экземпляре. Одиночка
– Новые элементы создаются путем копирования элемента-прототипа. Прототип
Нужно обеспечить совместное использование элементов с различными интерфейсами. Адаптер
Нужно динамически расширить функциональность элемента, добавить ему новые обязанности на время. Декоратор
Нужно заменить элемент до момента, когда он действительно понадобится. Заместитель
Нужно одинаково обращаться с простыми и составными элементами. Компоновщик
Нужно ограничить набор экземпляров элементов. Приспособленец
Нужно предоставить доступ к элементам подсистемы с помощью одного элемента. Фасад
Нужно переопределить шаги алгоритма в элементах-потомках. Шаблонный метод
Нужно предоставить последовательный доступ ко всем подэлементам составного элемента. Итератор
Нужно представить запрос в виде элемента, ставить запросы в очередь, поддерживать отмену операций. Команда
Элементы должны изменять свое состояние в зависимости от состояния других элементов. Наблюдатель
Нужно объединить все связи между элементами в одном элементе. Посредник
Нужно обойти элементы структуры, выполнив над каждым из них некоторую операцию. Посетитель
Нужно изменять поведение элемента в зависимости от его состояния. Состояние
Нужно определить семейство взаимозаменяемых алгоритмов в виде элементов. Стратегия
Нужно сохранить состояние элемента, восстановить элемент в нужном состоянии. Хранитель
Если удалось выбрать подходящий вариант, переход к описанию подходящего паттерна.
Дата добавления: 2016-03-15; просмотров: 981;