零基础学习设计模式之装饰器模式

定义

在不改变目标结构的情况下,动态的给对象增加功能

举例

如房子装修、相片加相框等,都是装饰器模式。

基本组件

  • 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。
  • 具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。
  • 抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
  • 具体装饰(ConcreteDecorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。

类图

代码

package com.lglbc.decorator;/*** @author: 乐哥聊编程(全平台同号)* @date: 2022/5/22*/
public interface Component {public void execute();
}
package com.lglbc.decorator;/*** @author: 乐哥聊编程(全平台同号)* @date: 2022/5/22*/
public class ConcreteComponent implements Component{@Overridepublic void execute() {System.out.println("开始执行原始操作...");}
}
package com.lglbc.decorator;/*** @author: 乐哥聊编程(全平台同号)* @date: 2022/5/22*/
public abstract class Decorator implements Component{private Component component;public Decorator(Component component) {this.component = component;}@Overridepublic void execute() {component.execute();}
}
package com.lglbc.decorator;/*** @author: 乐哥聊编程(全平台同号)* @date: 2022/5/22*/
public class DecoratorA extends Decorator{public DecoratorA(Component component) {super(component);}@Overridepublic void execute() {addExcExecute();super.execute();}public void addExcExecute(){System.out.println("对方法进行装饰处理");}
}
package com.lglbc.decorator;/*** @author: 乐哥聊编程(全平台同号)* @date: 2022/5/22*/
public class Main {public static void main(String[] args) {Component component = new DecoratorA(new ConcreteComponent());component.execute();}
}

零基础学习设计模式之装饰器模式(配套视频)相关推荐

  1. go设计模式之装饰器模式

    go设计模式之装饰器模式 再写这篇文章时,我已经看了很多其他人发表的类似文章,大概看了这么多吧. 亓斌的设计模式-装饰者模式(Go语言描述) jeanphorn的Golang设计模式之装饰模式 七八月 ...

  2. 详解设计模式:装饰器模式

    装饰器模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),是 GoF 的 23 种设计模式中的一种结构型设计模式.装饰器模式 是指在不改变原有对象的基础之上,将 ...

  3. javascript设计模式之装饰器模式(结构型模式)

    javascript设计模式之装饰器模式 js的设计模式分为创建型模式,结构型模式和行为模式 结构模式描述了如何组合对象以提供新的功能. 装饰器模式是一种常见的结构型模式,我们可以以一个基础对象为基础 ...

  4. 设计模式之装饰器模式详解

    设计模式之装饰器模式详解 文章目录 设计模式之装饰器模式详解 一.什么是装饰器模式 二.装饰器模式的角色组成 三.装饰器模式通用写法示例 四.装饰器模式业务中的应用举例 五.装饰器模式优缺点 一.什么 ...

  5. 【设计模式】装饰器模式的使用

    问题来源 我们在进行软件系统设计的时候,有一些业务(如下图,一些通用的非功能性需求)是多个模块都需要的,是跨越模块的.把它们放到什么地方呢? 最简单的办法就是把这些通用模块的接口写好,让程序员在实现业 ...

  6. python中的装饰器、装饰器模式_python 设计模式之装饰器模式 Decorator Pattern

    #写在前面 已经有一个礼拜多没写博客了,因为沉醉在了<妙味>这部小说里,里面讲的是一个厨师苏秒的故事.现实中大部分人不会有她的天分.我喜欢她的性格:总是想着去解决问题,好像从来没有怨天尤人 ...

  7. python 设计模式之装饰器模式 Decorator Pattern

    #写在前面 已经有一个礼拜多没写博客了,因为沉醉在了<妙味>这部小说里,里面讲的是一个厨师苏秒的故事.现实中大部分人不会有她的天分.我喜欢她的性格:总是想着去解决问题,好像从来没有怨天尤人 ...

  8. 研磨设计模式学习笔记之装饰器模式

    1.装饰器模式定义:动态地给一个对象添加一些额外的功能职责,就增加功能来说,装饰器模式要比生成子类更加灵活. 2.装饰器模式实现:在装饰器模式的实现中,为了能够实现和原来使用被装饰对象的代码无缝隙结合 ...

  9. c++设计模式之装饰器模式 学习笔记

    装饰器模式的意义和字面意思相差不多--就是装饰的方法.比如人穿不同的衣服,在花园里栽种不同的花,游戏中的英雄带不同的装备等等.其中,人/花园/英雄是主体,是你要装备的东西:衣服/花/装备是装备物,是你 ...

最新文章

  1. python windows系统调用_python日记第四章:python用os和sys模块进行系统调用
  2. Scrapy框架----pipeline---------数据保存EXCEL
  3. Linux嗅探ettercap
  4. Web云笔记--CSS
  5. 切换分支 更改只影响当前分支代码_idea 中分支管理操作的意思
  6. lua和unity如何交互_Unity中C#对象与Lua之间交互的原理
  7. oracle biee
  8. long long c语言_带你打开C语言的大门之C语言的变量
  9. CML更新 | 新增百度小程序、支付宝小程序
  10. ZRender实现粒子网格动画实战
  11. 影响mysql导入效率的参数_extended-insert对mysqldump及导入性能的影响
  12. URAL 1876 Centipede's Morning (机智)
  13. java unexpected type_意外类型需要变量找到值(Unexpected type required variable found value)...
  14. python和java的区别-java和python的区别
  15. mysql插入日期_MySQL 的两个特殊数据类型属性 unsigned与 zerofill
  16. 加密对冲基金究竟靠谱吗?全球第一份行业报告揭开秘密
  17. RN:Android 开发记录
  18. 工业控制系统发展历程
  19. 谷歌浏览器打开页面出现(任何网页包括设置)崩溃解决方法。
  20. 贪吃蛇python游戏

热门文章

  1. [简单逻辑学]逻辑学的基本原理——普遍命题
  2. 泰克电输运/物性表征/量子材料/超导材料测试方案
  3. pmsm仿真 matlab 转子转角波形,MATLAB/SIMULINK的永磁同步电机矢量控制系统仿真研究...
  4. 【AI视野·今日CV 计算机视觉论文速览 第219期】Tue, 15 Jun 2021
  5. vmware设置内外网双网卡(均是独立IP)
  6. linux的超级酷工具之Emacs
  7. Http 协议建立连接的方式
  8. RKC Z-TIO 模块基于MODBUS使用PROTEM软件设定参数
  9. McAfee防火墙导致Jmail发邮件失败的解决方法
  10. 创意发明: 基于STC51单片机超声波测距(精简设计只需三个元件)