public class DecoratePattern {

/**
     * 装饰类的好处:相比继承而言减少了代码的耦合性(继承父类改变子类也要相应的做出改变)
     *
     * 装饰类的满足条件:1、在装饰类中要获取被装饰类的引用 private Student student 2、在装饰类中的构造函数中加入被装饰类的对象
     */
    public static void main(String[] args) {
        Teacher teacher = new Teacher(new Student());
        teacher.study();
    }
}

interface Study {
    public void study();
}
//被装饰的类
class Student implements Study {

@Override
    public void study() {
        System.out.println("1");
        System.out.println("2");
    }
}
//装饰类
class Teacher implements Study {
    private Student student;

public Teacher(Student student) {
        this.student = student;
    }

@Override
    public void study() {
        student.study();
        System.out.println("3");
        System.out.println("4");
    }

}

装饰类的常见应用为BufferReader BufferInputStream 等缓存流里。

装饰模式 DecoratePattern相关推荐

  1. 设计模式之装饰模式(Java实现)

    "怎么了,鱼哥?" "唉,别提了,网购了一件衣服,结果发现和商家描述的差太多了,有色差就算了,质量还不好,质量不好就算了,竟然大小也不行,说好的3个X,邮的却是一个X的, ...

  2. 装饰模式(Decorator)

    1.概念 装饰模式动态地给一个对象添加一些额外的职责.就扩展功能而言,它比生成子类方式更为灵活,属于结构性模式一种. 2.模式结构 抽象组件角色(Component):定义一个对象接口,以规范准备接受 ...

  3. 设计模式之装饰模式(Decorator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  4. 装饰模式(Decorator Pattern)

    装饰模式(Decorator Pattern) 一句话                                                                 继承一个抽象类, ...

  5. 设计模式之笔记--装饰模式(Decorator)

    装饰模式(Decorator) 定义 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活. 类图 描述 Component:被装饰者和装饰者 ...

  6. 装饰模式(Decorator Pattern)--------结构型模式

    装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为.装饰模式降低类系统的耦合度,可以动态地增加或删除对象的职责,并使得需要装饰的具体构件类和具体装饰类可以独立变化,以便增加新的具体构件 ...

  7. c语言装饰,C++设计模式之装饰模式(Decorator)

    装饰模式是一种经典的类功能扩展模式,其精髓在装饰类使用继承加聚合的方式获得接口和要实现对象,然后通过自己实现扩展接口 作用装饰模式通过装饰类动态地将责任附加到对象上,若要扩展功能,无需通过继承增加子类 ...

  8. PHP设计模式之装饰模式(Decorator)

    装饰模式可以在不适用创造更多子类的情况下,给对象增加额外的职责,使对象的功能得以扩展 抽象构件(Component)角色:定义一个对象接口,以规范准本接收附加职责的对象,从而可以给这些对象动态地添加职 ...

  9. 设计模式-装饰模式(08)

    定义 装饰模式的英文原话是:Attach additional responsibilities to an object dynamically keeping the same interface ...

  10. 步步为营 .NET 设计模式学习笔记 十四、Decorator(装饰模式)

    概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性:并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多 ...

最新文章

  1. Neural-RGBD: 从单目视频序列中估计深度及其不确定度
  2. 玩转动态编译 - 高级篇:一,IL访问静态属性和字段
  3. k8s pod restartcount 改0_Prometheus+k8s之告警通知
  4. 爆料!亦庄地区数据中心将面临史上最长群体”限电“
  5. JAVA 编写程序实现如下功能:一个线程进行如下运算1*2+2*3+3*4+……+19*20,而另一个线程则每隔一段时间读取前一个线程的运算结果。
  6. git rm -r --cached 去掉已经托管在git上的文件
  7. heavy hitter是什么意思?
  8. 报错解决——make: *** No targets specified and no makefile found. Stop
  9. Java关系操作符简写
  10. 算法设计与分析——算法分析基础
  11. 最经典的大数据案例解析(附代码)
  12. 任务清单小功能的实现(任务的增、删、改、查、存储)使用Vue实现
  13. Lumerical MODE solution FBG光栅透射谱的仿真,官网fbg.lms例子的详解
  14. 三个点坐标求解一个圆
  15. 嵌入式开发--CubeMX使用入门教程
  16. 手把手教你Nodejs获取微信小程序二维码
  17. 学生成绩管理系统——课程设计报告
  18. 网络切片技术缺点_一文读懂网络切片和服务质量(QoS)的差异
  19. OBS(Open Broadcaster Software)
  20. video自动播放 隐藏播放控制条,并且用点击 video 元素的时候 控制暂停和播放...

热门文章

  1. 基于PythonGUI的原神圣遗物游戏装备管理与角色数值模拟系统
  2. 论文阅读:A Survey on Deep Hashing Methods 综述:深度哈希方法
  3. vue配置sass全局变量
  4. 计划排产软件助力厨房电器业提升管理
  5. 键盘按键名键码对照表
  6. FPGA 串口通信(补)——通用模块
  7. 微信扫一扫下载apk 微信直接下载APK(APP)的解决方案
  8. 西湖论剑2021杂项(misc)--YUSA的小秘密
  9. android 北斗测试,安卓手机查看是否支持北斗导航系统的详细检测方法
  10. 仙之侠道2玖章各个任务详情_仙之侠道2玖章