- 装饰角色抽象类或接口
public abstract class AbstractSubject {
protected abstract void doSomething();
}
- 装饰角色抽象类或接口实现类
public class ConcreteSubject extends AbstractSubject {
@Override
protected void doSomething() {
//具体操作
}
}
- 装饰类抽象类
public class AbstractDecorator extends AbstractSubject{
//待装饰的角色
private AbstractSubject subject;
//构造函数传递待装饰的角色
public AbstractDecorator(AbstractSubject subject) {
this.subject = subject;
}
@Override
protected void doSomething() {
this.subject.doSomething();
}
}
- 装饰类抽象类具体实现类
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();
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。