装饰模式的目的是为了给一个对象动态的增加一些功能。装饰对象和被装饰的对象实现同一个接口,装饰对象持有被装饰对象的实例。

类图:

示意性代码:

package com.javadesignpattern.Decorator;public interface Component {void sampleOperation();}

package com.javadesignpattern.Decorator;public class ConcreteComponent implements Component{public void sampleOperation() {// TODO Auto-generated method stubSystem.out.println(ConcreteComponent.class + ": sampleOperation function");}
}

package com.javadesignpattern.Decorator;public class Decorator implements Component{Component component;public Decorator(Component component){this.component = component;}public void sampleOperation() {// TODO Auto-generated method stub
        component.sampleOperation();System.out.println(Decorator.class + " : sampleOperation function");}}

package com.javadesignpattern.Decorator;public class ConcreteDecorator extends Decorator{Decorator dec;public ConcreteDecorator(Decorator dec){super(dec.component);this.dec = dec;}public void sampleOperation(){super.sampleOperation();System.out.println(ConcreteDecorator.class + " : sampleOperation function");}}

package com.javadesignpattern.Decorator;public class Client {public static void main(String[] ags){Component componemt = new Decorator(new ConcreteComponent());componemt.sampleOperation();        System.out.println("--------------------");Component componemt1 = new ConcreteDecorator(new Decorator(new ConcreteComponent()));componemt1.sampleOperation();System.out.println("--------------------");}}

装饰模式以这样的形式出现:

new Decorator1(new Decorator2(new Decorator3(new ConcreteComponent())))

装饰模式在什么场景下使用:

1. 需要扩展一个类的功能

2. 动态的给一个对象增加一些功能

3. 需要一些扩展类的功能,但是有很多类,这样使得继承变得不太现实。

转载于:https://www.cnblogs.com/ChristyorRuth/p/3763393.html

设计模式(八) : 结构型模式--装饰模式相关推荐

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

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

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

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

  3. 备战面试日记(3.3) - (设计模式.23种设计模式之结构型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.9 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

  4. 设计模式 之 结构型模式

    设计模式 之 结构型模式 模式 & 描述 包括 结构型模式 这些设计模式关注类和对象的组合.继承的概念被用来组合接口和定义组合对象获得新功能的方式. 适配器模式(Adapter Pattern ...

  5. 设计模式之结构型模式(5种)

    目录 结构型模式(Structural Pattern):怎么构造一个对象(行为.属性) 一.适配器模式 二.桥接模式(Bridge) 三.装饰者模式 设计模式在JAVA I/O库中的应用 案例 使用 ...

  6. JAVA23种设计模式(2)-结构型模式7种

    JAVA23种设计模式(2)-结构型模式7种 把类结合在一起形成更大的结构 适配器模式(adapter) 一句话:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容 这是平时比较常见的一种模 ...

  7. 设计模式3——结构型模式

    结构型模式描述如何将类或对象按某种布局组成更大的结构,它分为类结构型和对象结构型模式,前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象. 由于组合关系或聚合关系比继承关系耦合度低,满足&q ...

  8. 组合模式(Bridge Pattern) – 设计模式之结构型模式

    组合模式(Bridge Pattern) – 设计模式之结构型模式: 目录 组合模式(Component Pattern) 类图 例子1: 过程: 类图: 代码: 抽象组件:PlayerComposi ...

  9. 设计模式(17)-----结构型模式-----外观设计模式

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

  10. 设计模式:结构型模式-桥接、外观、组合、享元模式

    结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构.它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象. 由于组合关系或聚合关系比继承关系耦 ...

最新文章

  1. unity test相关
  2. C语言 · FJ的字符串
  3. 计算机网络应用层笔记--域名系统DNS
  4. JavaScript如何实现字符串拼接操作
  5. 湖北二级计算机考试时间2015年,2015上半年湖北计算机等级考试时间
  6. formdata ie9怎么兼容_2021上半年教师资格证笔试报名如何设置兼容性?
  7. 《剑指offer》-中序遍历下一个节点
  8. Mybatis中的DataSource配置
  9. 虚拟服务器开启打印端口号,打印机服务器虚拟端口设置方法
  10. 证券交易所的运作系统
  11. 微信接口昵称在服务器乱码,微信网页开发获取用户昵称乱码 微信昵称包含emoji表情乱码的解决方案...
  12. 二级考试c语言中 星号与字母 题型总结,计算机等级C语言上机考试编程题分类总结.doc...
  13. 18650锂电池知识全解析
  14. 微信开放平台和公众平台的区别
  15. Redhat更换yum源
  16. 2022年中国春节档电影观影人次、票房收入及票价走势分析[图]
  17. 基于python和TensorFlow的电影推荐系统
  18. 采编系统服务器架构,遂宁日报新闻采编系统的设计与实现
  19. JetBrains IDE Support的安装
  20. 你的网络被DNS劫持了吗?dns 被劫持怎么解决

热门文章

  1. 很多人把红薯当成减肥餐,吃红薯到底是增肥还是减肥?
  2. 微信新功能能够给企业、个人商家带来什么?
  3. 给大家讲一个被社区团购小程序套路的经历吧
  4. 网上讨论“电商平台打败了实体店”?
  5. Cause: java.sql.SQLException: Unknown initial character set index ‘255‘ received from server. Initia
  6. Qt4_实现自定义委托
  7. msyql数据类型对照java类型
  8. Java-Eclipse快捷键汇总
  9. 如何使用PowerShell保护密码
  10. ssms win10_10个SSMS技巧和窍门可提高您的生产力