文档章节

Head First Design Pattern 读书笔记(3)装饰者模式

Tek_Eternal
 Tek_Eternal
发布于 2015/01/03 20:29
字数 378
阅读 113
收藏 5

Head First Design Pattern 读书笔记(3) Decorator Pattern 装饰者模式

##Decorator Pattern 类图 装饰者模式类图

##定义 装饰者模式:通过让组件类与装饰者类实现相同的接口,装饰类可以在不修改原有组件类的情况下,动态拓展组件类的新功能,并且可以无限拓展下去。

##几个OO的原测

  1. 类应该对修改关闭,对拓展开放。-->“开闭原则”,即尽量不要修改已经在用的类,而通过继承的方式去拓展类的新功能。
  2. 设计类时应当尽量考虑不修改原有的代码。-->同“开闭原则”
  3. 组合与代理的方式经常用来在运行时动态地添加新功能。

##关于装饰者模式

  1. 装饰者模式每次新增功能都会重新封装一个装饰者类,这样可能带来“类爆炸”问题,代码中会有非常多结构相似的类,对一开始接触的人来说不好理解与维护。
  2. 装饰者类是它所装饰的组件类的一个镜像,它有原来组件的所有功能,还有新功能。
  3. 如果装饰者类跟组件类有同样函数签名的方法,在该方法中,装饰者在调用组件方法之前/后加入新的处理逻辑来给组件增加新功能。
  4. java中的输入输出流相关类就是通过Decorator Pattern实现的。

© 著作权归作者所有

Tek_Eternal
粉丝 11
博文 24
码字总数 16362
作品 0
福州
程序员
私信 提问
【笔记】Head First 设计模式

原文在下面的链接 https://github.com/PoBlue/small_script/tree/master/head-first-design-pattern Head First 设计模式 的笔记 12 个常用的设计模式,以一段说明,一张 UML 图的形式记录,...

莫威權在B612等着那温柔的风
2018/01/06
0
0
Head First Design Pattern 读书笔记(1) 策略模式

Head First Design Pattern 读书笔记(1) Strategy Pattern 策略模式 这几天为了锻炼看英语文档的能力,开着有道硬着头皮看 《Head First Desgin Pattern》的原版书,顺便做下笔记,把里面提...

Tek_Eternal
2015/01/02
66
0
python 与设计模式 ——工厂与装饰者

python 与设计模式第二篇 添加了test.py,里面的单元测试有使用的方法。 源码地址:[http://git.oschina.net/duoduo3_69/python_design_pattern][1] git checkout v002(这个版本与此篇博客相符...

duoduo3_69
2013/11/27
241
1
女神穿衣打扮之装饰模式

从女神的穿衣打扮看装饰模式 如何穿反映一个人的品味,女神去约会,如何穿衣打扮呢? 你需要考虑以下几个问题! 1、首先上身穿什么?下身穿什么?是需要思考的问题! 2、女神想去海边沙滩享受...

topwqp
2016/02/18
126
2
Head First Design Pattern 读书笔记(4) 单例模式

Head First Design Pattern 读书笔记(4) Singleton Pattern 单例模式 Silngleton Pattern 类图 单例模式非常简单,基本没有什么类之间的关系,就不画图了,保证某个类生成的实例只有一个即...

Tek_Eternal
2015/02/18
167
0

没有更多内容

加载失败,请刷新页面

加载更多

【1015】LNMP架构二

【1015】LNMP架构二 三、PHP安装 PHP安装和LAMP安装PHP方法有差别,需要开启php-fpm服务 1、下载PHP7至/usr/local/src/ 切换目录:cd /usr/local/src 2、解压缩 tar -jxvf php-7.3.0.tar.gz...

飞翔的竹蜻蜓
32分钟前
3
0
浅谈Visitor访问者模式

一、前言 什么叫访问,如果大家学过数据结构,对于这点就很清晰了,遍历就是访问的一般形式,单独读取一个元素进行相应的处理也叫作访问,读取到想要查看的内容+对其进行处理就叫作访问,那么...

青衣霓裳
51分钟前
6
0
JS内嵌多个页面,页面之间如何更快捷的查找相关联的页面

假设parent为P页面, P页面有两个子页面,分别为B页面和C页面; B页面和C页面分别内嵌一个iframe,分别为:D页面和E页面 现在通过B页面的内嵌页面D的方法refreshEpage(eUrl)来加载内嵌页面E的内容...

文文1
52分钟前
7
0
Hibernate 5 升级后 getProperties 错误

升级到 Hibernate 5 后,提示有错误: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map; 完整的错误栈为: java.lang.NoSuchMethodError: org.hibernate......

honeymoose
53分钟前
6
0
mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
56分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部