- 裝飾角色抽象類或接口
public abstract class AbstractSubject {
protected abstract void doSomething();
}
- 裝飾角色抽象類或接口實現(xiàn)類
public class ConcreteSubject extends AbstractSubject {
@Override
protected void doSomething() {
//具體操作
}
}
- 裝飾類抽象類
public class AbstractDecorator extends AbstractSubject{
//待裝飾的角色
private AbstractSubject subject;
//構造函數(shù)傳遞待裝飾的角色
public AbstractDecorator(AbstractSubject subject) {
this.subject = subject;
}
@Override
protected void doSomething() {
this.subject.doSomething();
}
}
- 裝飾類抽象類具體實現(xiàn)類
public class ConcreteDecorator extends AbstractDecorator {
public ConcreteDecorator(AbstractSubject subject) {
super(subject);
}
@Override
protected void doSomething() {
super.doSomething();
this.decorator();
}
private void decorator() {
//裝飾類方法
}
}
- 場景使用
//被裝飾對象
AbstractSubject subject = new ConcreteSubject();
//裝飾后對象
AbstractDecorator decorator = new ConcreteDecorator(subject);
//裝飾后方法調用
decorator.doSomething();
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者