Структурные паттерны (Structural)
Структурные паттерны делятся на два типа:
1. Паттерны уровня класса
2. Паттерны уровня объекта.
Паттерны уровня класса описывают взаимодействия между классами и их подклассами. Такие отношения выражаются путем наследования и реализации классов. Тут базовый класс определяет интерфейс, а подклассы - реализацию.
Паттерны уровня объекта описывают взаимодействия между объектами. Такие отношения выражаются связями - ассоциацией, агрегацией и композицией. Тут структуры строятся путем объединения объектов некоторых классов.
Ассоциация - отношение, когда объекты двух классов могут ссылаться один на другой. Например, свойство класса содержит экземпляр другого класса.
Агрегация – частная форма ассоциации. Агрегация применяется, когда один объект должен быть контейнером для других объектов и время существования этих объектов никак не зависит от времени существования объекта контейнера. Вообщем, если контейнер будет уничтожен, то входящие в него объекты не пострадают. Например, мы создали объект, а потом передали его в объект контейнер, каким-либо образом, можно в метод объекта контейнера передать или присвоить сразу свойству контейнера извне. Значит, при удалении контейнера мы ни как не затронем наш созданный объект, который может взаимодействовать и с другими контейнерами.
Композиция – Тоже самое, что и агрегация, но составные объекты не могут существовать отдельно от объекта контейнера и если контейнер будет уничтожен, то всё его содержимое будет уничтожено тоже. Например, мы создали объект в методе объекта контейнера и присвоили его свойству объекта контейнера. Из вне, о нашем созданном объекте никто не знает, значит, при удалении контейнера, созданный объект будет удален так же, т.к. на него нет ссылки извне.
К паттернам уровня класса относится только «Адаптер». Смысл его работы в том, что если у вас есть класс и его интерфейс не совместим с библиотеками вашей системы, то что бы разрешить этот конфликт, мы не изменяем код этого класса, а пишем для него адаптер.
Все структурные паттерны отвечают за создание правильной структуры системы, в которой без труда смогут взаимодействовать между собой уже имеющиеся классы и объекты.
* [Адаптер (Adapter)](Adapter)
* [Мост (Bridge)](Bridge)
* [Компоновщик (Composite)](Composite)
* [Декоратор (Decorator)](Decorator)
* [Фасад (Facade)](Facade)
* [Приспособленец (Flyweight)](Flyweight)
* [Заместитель (Proxy)](Proxy)
Адаптер (Adapter)
Паттерн Adapter относится к структурным паттернам уровня класса. Часто в новом проекте разработчи...
Мост (Bridge)
Паттерн Bridge относится к структурным паттернам уровня объекта. Паттерн Bridge позволяет раздели...
Компоновщик (Composite)
Паттерн Composite относится к структурным паттернам уровня объекта. Паттерн Composite группирует ...
Декоратор (Decorator)
Паттерн Decorator относится к структурным паттернам уровня объекта. Паттерн Decorator используетс...
Фасад (Facade)
Паттерн Facade относится к структурным паттернам уровня объекта. Паттерн Facade предоставляет выс...
Приспособленец (Flyweight)
Паттерн Flyweight относится к структурным паттернам уровня объекта. Паттерн Flyweight используетс...
Заместитель (Proxy)
Паттерн Proxy относится к структурным паттернам уровня объекта. Паттерн Proxy предоставляет объек...