1、装饰模式

动态的给一个对象添加一些额外的职责,就增加功能来说Decorator模式相比生成子类更为灵活。

要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。

实例一:

public interface Source {public void method();}public class SourceChild implements Source {@Overridepublic void method() {System.out.println("  ~~~~  method()  ~~~~~");}}public class Decorator implements Source {private Source source = null;public Decorator(final Source source) {this.source = source;}@Overridepublic void method() {this.source.method();System.out.println("  ~~~   method2() ~~~");}}

模拟测试:

public class Client {public static void main(final String[] args) {final SourceChild sc = new SourceChild();final Decorator dt = new Decorator(sc);dt.method();}
}

结构型模式-----装饰模式(decorator)相关推荐

  1. 结构型模式:Decorator 装饰模式

    为什么80%的码农都做不了架构师?>>>    结构型模式:Decorator 装饰模式 1.子类复子类,子类何其多   1)假如我们需要为游戏中开发一种坦克,除了各种不同型号的坦克 ...

  2. 设计模式-结构型模式-装饰模式

    设计模式-结构型模式-装饰模式 栗子 以成绩单需要家长签字为要求. 成绩单类图 // 抽象成绩单 public abstract class SchoolReport{// 成绩单你的成绩情况publ ...

  3. 结构型模式-装饰模式(扩展系统功能)

    目录 1. 定义 2. 结构 3. 代码实现 4. 透明装饰模式与半透明装饰模式 4.1 透明装饰模式 4.2 半透明装饰模式 5. 注意事项 6. 优缺点 7. 适用场景 8. 个人理解 参考 装饰 ...

  4. 5.4结构型模式—————装饰模式

    装饰模式的定义与特点 装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式. 装饰(Decorator)模式 ...

  5. 结构型模式——装饰模式

    装饰模式的定义与特点 装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式. 装饰(Decorator)模式 ...

  6. 【设计模式】结构型模式——装饰模式

    文章目录 一.定义 二.问题 三.解决方案 四.实现 五.UML图 六.装饰模式应用场景 七.总结 优点 缺点 八.与其他模式的关系 一.定义 装饰模式是一种结构型设计模式, 允许你通过将对象放入包含 ...

  7. 10 结构型模式-----装饰模式

    模式动机(Decorator Pattern):我们在给一个类进行功能扩展时,总是通过继承或者复合关系,使得一个类具有其他相关类型的功能,继承本身属于静态关联,派生类比较臃肿,使用者也不能控制增加功能 ...

  8. C++结构型模式-装饰模式

    1.1 基本概念 装饰器模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加功能来说,装饰器比生成子类实现更为灵活. 装饰器可以在不改变对象本身的基础上给对象增加额外 ...

  9. 结构型模式之Decorator模式

    1.意图 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活 2.适用性 以下情况使用Decorator模式 (1)在不影响期货对象的情况下,以动态.透明的 ...

最新文章

  1. 隐藏在Win XP中的28个秘密武器
  2. oracle分区和锁的难,oracle使用三(锁和表分区)
  3. 『ACM』ACM模板合集
  4. 【Docker】Docker 一个偶现的错误 bash命令突然找不到
  5. 不知为不知--信息论和最大熵原则
  6. 网页游戏开发入门教程一(webgame+design)
  7. 电机不动 米兔机器人_深度解密米兔积木机器人八大黑科技
  8. html点击复制一段文字内容,js实现点击按钮复制文本功能
  9. nofollow标签的写法与作用
  10. Java中求珠穆朗玛峰问题
  11. ROS2极简总结-新增概念
  12. Android Studio配置优化最全详解
  13. vue插槽,内容分发
  14. There is no getter for property named xxx in xxx
  15. 计算机图形学 旋转平移原理,计算机图形旋转操作详细步骤
  16. Python Socket 编程详细介绍
  17. 2022年尿素行业分析
  18. ASP.NET统计在线人数
  19. 深度分析|一文读懂银行数据架构体系
  20. matlab空间杜宾模型命令,matlab 空间杜宾模型

热门文章

  1. 计算机编码方式详解(Unicode、UTF-8、UTF-16、ASCII)
  2. Linux第四章:1.Linux关机、重启、休眠、切换用户命令大全
  3. 2022年全球市场距离和位置传感器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  4. fedora php mysql_Fedora 8下用Yum安装Apache+PHP+MySQL环境
  5. abaqus的XFEM(扩展有限元)使用限制
  6. android classes2.dex,原创??近乎完美解决AndroidKiller不提取classes2+.dex JAVA源码的问题...
  7. 我,机械工程硕士,工作一年,月入6K
  8. socket.io搭建分布式Web推送服务器
  9. oracle metalink网址,oracle metalink账号|Oracle Metalink账号注册指南-创客空间
  10. An Optimistic Perspective on Offline Reinforcement Learning(ICML2020)