Шаблон "Декоратор" (Decorator)

Шаблон "Декоратор" помогает добавить поведение или обязанности к объекту. Он даже называется Враппер. Предположим, у нас есть 6 объектов и для двух из них мы хотим специфическое поведение. Это можно сделать с использованием декоратора.
Предполагается, что Декораторы должны быть абстрактными классами, а реальные реализации должны быть унаследованы от них.
Шаблон Декоратор может быть использован в тех случаях, когда необходимо добавить дополнительный функционал к объекту или группе объектов. Рассмотрим пример с Рождественской Елкой. Нам необходимо его разукрасить (декорировать). У нас есть много веток, которые необходимо украсить по-разному.
Рассмотрим базовый класс Декоратор:
Этот класс содержит лишь один метод place(). Этот метод развешивает различные типы наименований на ветки елки. Класс ChristmasTree очень простой и содержит лишь один метод, который возвращает ветку.
ChristmasTree.java:
Теперь мы можем декорировать ветки тремя различными методами. Один из них - развешивание цветных шариков, второй - развешивание цветных ленточек, а третий - цветных звезд.
BallDecorator.java:
По такому же принципу можно сделать StarDecorator и RufflesDecorator. Теперь посмотрим, как можно использовать декоратор. Все просто, нужно лишь передать ссылку на объект класса ChristmasTree в декоратор.







> branch.put("ball");
звідки метод .put() ?
> branch.put("ball");
звідки метод .put() ?
package structural.decorator;
public class Branch {
private String decoration;
public void put(String decoration){
this.decoration = decoration;
}
}
Отправить комментарий