第一、装饰者模式定义 装饰者模式是在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能), 属于结构型模式。 第二、装饰者的应用场景 1、用于扩展一个类的功能或者给一个类添加附加职责 2、动态的给一个类添加一个功能,这些功能可以再动态的撤销 第三、装饰者 ...
分类:
其他好文 时间:
2019-09-01 23:35:01
阅读次数:
102
组合模式 简单工厂模式 策略模式 装饰者模式 代理模式 工厂方法模式(工厂模式) 模板模式 建造者模式 ...
分类:
其他好文 时间:
2019-08-22 12:44:50
阅读次数:
83
装饰者模式 动态地将责任附加到对象上。若要拓展功能,装饰者提供了比继承更有弹性的替代方案。 1. 角色 + 抽象构件(Component)角色:要包装的原始对象,是一个抽象类或接口。 + 具体构件(ConcreteComponent)角色:最终要装饰的实际对象,是Component的实现类。 + 装 ...
分类:
其他好文 时间:
2019-08-22 00:31:38
阅读次数:
92
1. 定义 装饰者模式动态地将责任责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 2. 实现要点 装饰器与被装饰的类需要继承自相同接口,来达到类型匹配。装饰器持有被装饰的类的实例。 3. 代码实例 ...
分类:
其他好文 时间:
2019-08-15 19:00:55
阅读次数:
104
1、I/O分类与装饰者模式 基本java I/O包含两种类型的流,字节流(inputStream、outputStream)与字符流(Writer,Reader),关于I/O操作类的设计,用到了装饰者模式,如下图所示。 其中FilterInputStream抽象类继承了InputStream抽象类, ...
分类:
编程语言 时间:
2019-08-13 00:44:55
阅读次数:
138
装饰者模式 1. 定义 装饰者模式 动态的将责任附加到对象上。如要扩展功能,装饰者提供了比继承更有弹性的替代方案。 2. 类图 3. Example 假如有这样一个需求:有一天,奶茶店的老板喊你给他们做一个简单版的计算价格程序。新店开张,供应的饮料有奶茶(8元)、红茶(7元)、绿茶(5元)三种,提供 ...
分类:
其他好文 时间:
2019-08-09 01:04:34
阅读次数:
111
首先让我们看一下装饰者模式(我爱叫他套娃模式)的概念:动态的将责任附加到对象上, 若要扩展功能,装饰者提供了比继承者更有弹性的集成方案。 什么?没看懂?没关系,最后再来看这个概念,想让让我们来看一个咖啡屋项目(就是点各式 各样的咖啡)。 原本的设计如下: 看似很好的设计,但是别忘了,买咖啡时候我们会 ...
分类:
其他好文 时间:
2019-08-07 18:52:50
阅读次数:
113
一、角色 + 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象 + 具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类 + 装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口 ...
分类:
其他好文 时间:
2019-08-05 12:22:34
阅读次数:
108
装饰者模式 一、应用实例 咖啡订单项目 1) 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack、Decaf 2)调料:Milk、Soy、Chocolate 3)要求在扩展新的咖啡种类时,有良好的扩展性、改动方便。 二、装饰者模式 动态的将新功能附加到对象 ...
分类:
其他好文 时间:
2019-08-04 23:50:19
阅读次数:
159
1.1 简述及实现原则 装饰模式:在不改变 原有类 和 不使用继承的情况下, 动态地扩展一个对象的功能。 因会创建一个包装对象,来包裹真实对象而得名。 作用:增强对象的功能 例子1: 墙: 功能 遮风挡雨 包了墙纸的墙(本质还是墙): 功能 遮风挡雨 新增功能 陶冶情操 1、没有改变原有类 2、进行 ...
分类:
其他好文 时间:
2019-08-01 09:47:50
阅读次数:
188