16 lines
1.5 KiB
Markdown
16 lines
1.5 KiB
Markdown
|
# Декоратор
|
||
|
|
||
|
Структурный паттерн проектирования, который позволяет динамически добавлять объектам новую функциональность, оборачивая их в полезные «обёртки».
|
||
|
|
||
|
Типы декораторов соответствуют типам декорируемых компонентов (соответствие достигается посредством наследования или реализации интерфейса). Декораторы изменяют поведение компонентов, добавляя новую функциональность до и (или) после (или даже вместо) вызовов методов компонентов. Компонент может декорироваться любым количеством декораторов. Декораторы обычно прозрачны для клиентов компонента (если клиентский код не зависит от конкретного типа компонента).
|
||
|
|
||
|
## Принцип
|
||
|
|
||
|
- Согласно принципу открытости/закрытости системы должны проектироваться так, чтобы их закрытые компоненты были изолированы от новых расширений
|
||
|
|
||
|
## Схемы
|
||
|
|
||
|
![scheme-1](scheme-1.png)
|
||
|
|
||
|
![scheme-2](scheme-2.png)
|