软件设计模式ch3装饰者模式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(一) 编写自己的Java I/O装饰者 (二) 测试新的Java I/O装饰者
(一) 编写自己的Java I/O装饰者
(一) 编写自己的Java I/O装饰者
(二) 测试新的Java I/O装饰者
(二) 测试新的Java I/O装饰者
RUN
七、总结
总结
1
OO Basics
➢Abstraction ➢Encapsulation ➢Polymorphism ➢Inheritance
糕的习惯,违反了“针对接口编程,而不是针对实 现编程”的设计原则),当服务器端引入装饰者模 式时,客户端就会出现状况。 装饰者模式使得实例化组件的复杂度提升。
四、装饰饮料
(一) 星巴兹饮料 (二) 实现
(一) 星巴兹饮料
(二) 实现
从Beverage类开始
(二) 实现
Beverage类很简单,下面来实现 CondimentDecorator调料类
星巴兹是以扩展迅速而闻名的咖啡店, 其原始设计如下:
(二) 饮料类
(二) 饮料类
很明显,设计了太多的类
(三) 调整
从Beverage类开始,添加实例变量
加入子类
(三) 调整
(三) 调整
(四) 效果
(四) 效果
(五) 开放-关闭原则
设计原则五:
➢ 类应该对扩展开放,对修改关闭。
总结
2
OO Principles
➢Strive for loosely coupled designs between objects that interact.
OO Patterns
➢Observer - defines a one-to-many dependency between objects sowk.baidu.comthat when one object changes state, all its dependents are notified and updated automatically
(五) 开放-关闭原则
二、认识装饰者模式
(一) 思路 (二) 构造饮料订单
(一) 思路
以饮料为主体,运行时以 调料来“装饰”饮料,例 如,顾客想要摩卡和奶泡 深焙咖啡:
① 取一个深焙咖啡对象 ② 以摩卡对象装饰它 ③ 以奶泡对象装饰它 ④ 调用cost()方法,并依赖委
托将调料的价钱加上去。
OO Principles
➢Encapsulate what varies. ➢Favor composition over inheritence. ➢Program to interfaces, not implementations.
OO Patterns
➢Strategy - defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
编写饮料代码
(二) 实现
(二) 实现
编写饮料代码(续)
编写调料代码
(二) 实现
编写测试代码
(二) 实现
RUN
(二) 实现
(二) 实现
五、真实世界的装饰者:Java I/O
(一) 典型实例 (二) 装饰java.io类
(一) 典型实例
(二) 装饰java.io类
六、编写自己的Java I/O装饰者
总结
3
OO Principles
➢Classes should be open for extension but closed for modification.
OO Patterns
➢Decorator - Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.
(二) 构造饮料订单
(二) 构造饮料订单
(二) 构造饮料订单
(二) 构造饮料订单
三、装饰者模式
(一) 定义 (二) 类图 (三) 缺点
(一) 定义
装饰者模式:动态地将责任加到对象身上。如果要 扩展功能,装饰者模式提供了比继承更有弹性的替 代方案。
(二) 类图
(三) 缺点
有时在设计中加入大量的小类,变得不容易理解。 有的客户端代码依赖于特定的类型(这是个比较糟
3
软件设计方法及设计模式
装饰者模式
张聚礼 副教授/系统分析师
主要内容
一
星巴兹咖啡
二
认识装饰者模式
三
装饰者模式
四
装饰饮料
五
真实世界的装饰者:Java I/O
六
编写自己的Java I/O装饰者
一、星巴兹咖啡
(一) 概况 (二) 饮料类 (三) 调整 (四) 效果 (五) 开放-关闭原则
(一) 概况
(一) 编写自己的Java I/O装饰者
(一) 编写自己的Java I/O装饰者
(二) 测试新的Java I/O装饰者
(二) 测试新的Java I/O装饰者
RUN
七、总结
总结
1
OO Basics
➢Abstraction ➢Encapsulation ➢Polymorphism ➢Inheritance
糕的习惯,违反了“针对接口编程,而不是针对实 现编程”的设计原则),当服务器端引入装饰者模 式时,客户端就会出现状况。 装饰者模式使得实例化组件的复杂度提升。
四、装饰饮料
(一) 星巴兹饮料 (二) 实现
(一) 星巴兹饮料
(二) 实现
从Beverage类开始
(二) 实现
Beverage类很简单,下面来实现 CondimentDecorator调料类
星巴兹是以扩展迅速而闻名的咖啡店, 其原始设计如下:
(二) 饮料类
(二) 饮料类
很明显,设计了太多的类
(三) 调整
从Beverage类开始,添加实例变量
加入子类
(三) 调整
(三) 调整
(四) 效果
(四) 效果
(五) 开放-关闭原则
设计原则五:
➢ 类应该对扩展开放,对修改关闭。
总结
2
OO Principles
➢Strive for loosely coupled designs between objects that interact.
OO Patterns
➢Observer - defines a one-to-many dependency between objects sowk.baidu.comthat when one object changes state, all its dependents are notified and updated automatically
(五) 开放-关闭原则
二、认识装饰者模式
(一) 思路 (二) 构造饮料订单
(一) 思路
以饮料为主体,运行时以 调料来“装饰”饮料,例 如,顾客想要摩卡和奶泡 深焙咖啡:
① 取一个深焙咖啡对象 ② 以摩卡对象装饰它 ③ 以奶泡对象装饰它 ④ 调用cost()方法,并依赖委
托将调料的价钱加上去。
OO Principles
➢Encapsulate what varies. ➢Favor composition over inheritence. ➢Program to interfaces, not implementations.
OO Patterns
➢Strategy - defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
编写饮料代码
(二) 实现
(二) 实现
编写饮料代码(续)
编写调料代码
(二) 实现
编写测试代码
(二) 实现
RUN
(二) 实现
(二) 实现
五、真实世界的装饰者:Java I/O
(一) 典型实例 (二) 装饰java.io类
(一) 典型实例
(二) 装饰java.io类
六、编写自己的Java I/O装饰者
总结
3
OO Principles
➢Classes should be open for extension but closed for modification.
OO Patterns
➢Decorator - Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.
(二) 构造饮料订单
(二) 构造饮料订单
(二) 构造饮料订单
(二) 构造饮料订单
三、装饰者模式
(一) 定义 (二) 类图 (三) 缺点
(一) 定义
装饰者模式:动态地将责任加到对象身上。如果要 扩展功能,装饰者模式提供了比继承更有弹性的替 代方案。
(二) 类图
(三) 缺点
有时在设计中加入大量的小类,变得不容易理解。 有的客户端代码依赖于特定的类型(这是个比较糟
3
软件设计方法及设计模式
装饰者模式
张聚礼 副教授/系统分析师
主要内容
一
星巴兹咖啡
二
认识装饰者模式
三
装饰者模式
四
装饰饮料
五
真实世界的装饰者:Java I/O
六
编写自己的Java I/O装饰者
一、星巴兹咖啡
(一) 概况 (二) 饮料类 (三) 调整 (四) 效果 (五) 开放-关闭原则
(一) 概况