装饰者:

Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。

装饰者模式意图:

动态的给一个对象添加额外的职责。Decorator比生产子类灵活。

设计原则:

多用组合,少用继承。

利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展

类应设计的对扩展开放,对修改关闭。

要点:

1.装饰者和被装饰对象有相同的超类型。

2.可以用一个或多个装饰者包装一个对象。

3.装饰者可以在所委托被装饰者的行为之前或之后,加上自己的行为,以达到特定的目的。

4.对象可以在任何时候被装饰,所以可以在运行时动态的,不限量的用你喜欢的装饰者来装饰对象。

5.装饰模式中使用继承的关键是想达到装饰者和被装饰对象的类型匹配,而不是获得其行为。

6.装饰者一般对组件的客户是透明的,除非客户程序依赖于组件的具体类型。在实际项目中可以根据需要为装饰者添加新的行为,做到“半透明”装饰者。

7.适配器模式的用意是改变对象的接口而不一定改变对象的性能,而装饰模式的用意是保持接口并增加对象的职责。

java I/O中关于装饰者模式的实现

java I/O之装饰者模式相关推荐

  1. JAVA设计模式初探之——装饰者模式

    2019独角兽企业重金招聘Python工程师标准>>> 这个模式花费了挺长时间,开始有点难理解,其实就是 定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorat ...

  2. Java设计模式12:装饰器模式

    装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...

  3. java中什么是装饰者模式? 装饰者模式的使用!!

    其实无论是代理模式还是装饰模式.本质上我认为就是对原有对象增强的方式~ 一.对象增强的常用方式 很多时候我们可能对Java提供给我们的对象不满意,不能满足我们的功能.此时我们就想对Java原对象进行增 ...

  4. Java常用设计模式之装饰者模式

    在我们进行Java开发的时候,很多时候我们可能对Java提供给我们的对象不满意,不能满足我们的功能.此时我们就想对Java原对象进行增强,能够实现我们想要的功能就好. 一般来说,实现对象增强有三种方式 ...

  5. JAVA设计模式初探之装饰者模式

    这个模式花费了挺长时间,开始有点难理解,其实就是 定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活. 设计初衷:通常可以 ...

  6. 通俗易通,值得收藏的 java 设计模式实战,装饰者模式 之 你不用改变,就让你的能力变强了

    文章目录 什么是装饰者模式 装饰者模式中的角色 抽象构件(Component)角色 具体构件(Concrete Component)角色 装饰(Decorator)角色 具体装饰(Concrete D ...

  7. Java设计模式之《装饰器模式》及应用场景

    一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的. 而实际上,装饰器模式和代理模式 ...

  8. Java设计模式之《装饰器模式》

    一.概述 装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能. 不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的. 而实际上,装饰器模式和代理模式 ...

  9. 【Java设计模式系列】装饰器模式(Decorator Pattern)

    简介 一般有两种方式可以给一个类或对象新增行为: 继承 子类在拥有自身方法同时还拥有父类方法.但这种是静态的,用户无法控制增加行为的方式和时机. 关联 将一个类的对象嵌入另一个对象,由另一个对象决定是 ...

最新文章

  1. strut2配合json返回数据json对象
  2. Spring boot定制错误json数据
  3. axios 跨域代理
  4. Spring MVC开发环境搭建
  5. 如何设置多级标题_办公技巧|标题样式amp;多级列表结合,再也不用手动修改1.1、1.2 ...!...
  6. Python+OpenCV:理解K-Means聚类(K-Means Clustering)
  7. RHEL7忘记密码:修改root密码
  8. IS-IS快速收敛调优(一)——IS-IS收敛机制
  9. 美通企业日报 | 安踏上半年收入突破148亿元劲增超40%;猎聘8亿元战略投资问卷星...
  10. 物联网之有线通信技术之短距离的现场总线
  11. c语言小兔子原来有1个萝卜,体能《小兔子运萝卜》.doc
  12. 【强化学习论文精读】Timeliness Guaranteed Traffic Flow Forecasting Based on Federated Online Learning
  13. 前端VUE3+Vite -- 框架搭建
  14. SignalCatcher
  15. ES6, ES7, ES8, ES9 以及 ES10 新特征
  16. iOS 项目源码大全 github 国内外大神
  17. 微信小程序点赞+取消点赞多项点击
  18. Android基础之错误Failed to install
  19. Java对象与json转换
  20. python linux 时间格式化,Python中的时间日期转换

热门文章

  1. Java系列 – 用Java8新特性进行Java开发太爽了(续)
  2. HTTP头部信息解释分析(详细整理)
  3. poj 3321 Apple Tree
  4. 思科AP与交换机端口的配置
  5. [emuch.net]MatrixComputations(1-6)
  6. 汗!雅虎中国个人空间
  7. MySql练习题参考答案
  8. Spark菜鸟学习营Day5 分布式程序开发
  9. Linux系统下如何安装软件包
  10. 基于Matlab和Wind SQL数据库的通用选股策略回测程序