装饰者模式

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

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,746评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,916评论 18 399
  • 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的...
    Antidote799阅读 430评论 0 0
  • 装饰者模式 Decorator:不改变原类,不使用继承,创建一个包装对象,动态地扩展原对象的功能。 优点: 扩展性...
    专职跑龙套阅读 308评论 0 2
  • 写在文前: 初遇斯里兰卡,也是我一个人第一次独自背包前往国外。(视频在微博@背包胡二妹 均有发布,广州飞斯里兰卡,...
    野性丽丽阅读 844评论 3 21

友情链接更多精彩内容