Шаблоны проектирования - отличный способ применить хорошо известные и проверенные решения распространенных проблем в разработке программного обеспечения. Структурные шаблоны - это категория шаблонов проектирования, которые используются для решения общих проблем, связанных с ситуациями Композиция объектов и классов. Моя цель в этом посте - предложить краткое справочное руководство, которое можно было бы легко использовать для разработчиков.

Адаптер.

Шаблон адаптера позволяет классам работать вместе, создавая интерфейс класса для другого.

В этом примере мы используем SoldierAdapter, чтобы использовать унаследованный метод attack () в нашей текущей системе и поддерживать новую версию солдат SuperSoldiers.

Используйте этот шаблон, когда вам нужно использовать существующие классы, но их интерфейсы между ними не совпадают.

Мост.

Шаблон моста позволяет иметь один интерфейс в нашем классе для создания различных реализаций в зависимости от того, какой экземпляр мы получаем и какой экземпляр нам нужно вернуть.

В этом примере мы создаем мост между типами солдат и типами оружия, таким образом, мы можем правильно передать экземпляр оружия нашим солдатам.

Используйте этот шаблон, когда вам нужно использовать конкретную реализацию во время выполнения из абстракции.

Композитный.

Составной шаблон позволяет создавать объекты со свойствами, которые являются примитивными элементами или коллекцией объектов. Каждый элемент в коллекции может содержать другие коллекции, создавая глубоко вложенные структуры.

В этом примере мы создаем подсистему вычислительного оборудования, которая хранится в шкафу, каждый элемент может быть отдельным экземпляром.

Используйте этот шаблон, когда хотите представить иерархию объектов.

Декоратор.

Шаблон декоратора позволяет динамически расширять поведение объектов во время выполнения.

В этом примере мы используем декоратор для расширения поведения в уведомлениях Facebook.

Используйте этот шаблон, если вы хотите добавить расширения к объекту во время выполнения, не затрагивая другие объекты.

Фасад.

Шаблон фасада обеспечивает упрощенный интерфейс для набора интерфейсов в подсистеме. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы.

В этом примере мы создаем простой интерфейс Корзина, который абстрагирует всю сложность от нескольких подсистем, таких как Скидка, Доставка и Комиссии.

Используйте этот шаблон, если вы хотите предоставить простой интерфейс для сложной подсистемы.

Наилегчайший вес.

Паттерн «Легковес» экономит память за счет эффективного совместного использования большого количества мелкозернистых объектов. Общие легковесные объекты неизменяемы, то есть их нельзя изменить, поскольку они представляют характеристики, общие с другими объектами.

В этом примере мы

Используйте этот шаблон, когда приложение использует много мелких объектов, и их хранение дорого, или их идентичность не важна.

Прокси.

Шаблон Proxy предоставляет суррогатный объект или объект-заполнитель для другого объекта и управляет доступом к этому другому объекту.

В этом примере мы

Используйте этот шаблон, когда объект сильно ограничен и не может выполнять свои обязанности.

В сериале.

Творческий

Структурный

Поведенческий

Я надеюсь, что этот пост может быть полезным, и не забываю комментировать, если у вас есть вопросы, или писать мне в Twitter. Пока :)