Шаблоны проектирования
Шаблон | Описание |
Абстрактная фабрика (Abstract Factory) |
Поддерживает создание наборов родственных объектов путем определения вида набора, но не вида каждого отдельного объекта. |
Адаптер (Adapter) | Преобразует интерфейс класса в другой интерфейс. |
Мост (Bridge) | Создает интерфейс и реализацию, так что их можно изменять независимо друг от друга. |
Компоновщик (Composite) |
Состоит из объекта, содержащего дополнительные объекты такого же типа, позволяя клиентскому коду взаимодействовать с объектом верхнего уровня и не заботиться о детальных объектах. |
Декоратор (Decorator) | Динамически назначает объекту виды ответственности без создания отдельных подклассов для каждой возможной конфигурации видов ответственности. |
Фасад (Facade) | Предоставляет согласованный интерфейс к коду, который в противном случае не предоставлял бы согласованного интерфейса. |
Фабричный метод (Factory Method) |
Создает экземпляры классов, производных от конкретного базового класса, причем отдельные производные классы отслеживаются только «Фабричным методом». |
Итератор (Iterator) | Этот серверный объект предоставляет доступ к каждому элементу набора в последовательном порядке. |
Наблюдатель (Observer) | Поддерживает синхронизацию нескольких объектов, при которой объект уведомляет набор связанных объектов об изменениях любого члена набора. |
Одиночка (Singleton) | Предоставляет глобальный доступ к классу, который может иметь один и только один экземпляр. |
Стратегия (Strategy) | Определяет набор динамически взаимозаменяемых алгоритмов или видов поведения. |
Шаблонный метод (Template Method) |
Определяет структуру алгоритма, оставляя некоторые детали реализации подклассам |
Шаблоны упрощают взаимодействие между разработчиками, позволяя им общаться на более высоком уровне. Шаблоны снижают число ошибок, стандартизируя детали популярных решений. С шаблонами связаны две ловушки. Первая — насильственная адаптация кода к какому-нибудь шаблону. Иногда легкое изменение кода в соответствии с известным шаблоном может сделать код более понятным. Но если адаптация кода к стандартному шаблону требует слишком крупного изменения, это может привести к усложнению программы. Вторая — применение шаблона, продиктованное не целесообразностью, а желанием испытать шаблон в деле.