设计模式(15) -- 装饰者模式

简介: 设计模式(15) -- 装饰者模式

需求


星巴克咖啡订单项目

1dc618a0ed9580ce8bfa6facb208c08f.png


解决方案1:


5d4c6812c8535adbb050f4ddf2e1bce8.png


方案2


46a9d80a6e05e4e3b19d57a0ee70bcdf.png

如果加多份调料,可以吧boolean返回改为int返回份数。


方案2问题分析


66ba272a0bfc97be54a5fa679e3d5482.png


装饰者模式


定义


1dc618a0ed9580ce8bfa6facb208c08f.png


装饰者模式原理


5d4c6812c8535adbb050f4ddf2e1bce8.png


装饰者模式解决星巴克咖啡订单



46a9d80a6e05e4e3b19d57a0ee70bcdf.png


装饰者模式下的订单:2份巧克力+1份牛奶的 LongBlack


66ba272a0bfc97be54a5fa679e3d5482.png


装饰者模式咖啡订单项目应用实例


1dc618a0ed9580ce8bfa6facb208c08f.png

类图:

5d4c6812c8535adbb050f4ddf2e1bce8.png

抽象类:

46a9d80a6e05e4e3b19d57a0ee70bcdf.png

装饰类

66ba272a0bfc97be54a5fa679e3d5482.png88b9988b40447cb37c7e3c492d49867f.png80308c27701d3aead18db6c7b167f308.png


咖啡类:

1dc618a0ed9580ce8bfa6facb208c08f.png

5d4c6812c8535adbb050f4ddf2e1bce8.png

测试:

46a9d80a6e05e4e3b19d57a0ee70bcdf.png66ba272a0bfc97be54a5fa679e3d5482.png


完整代码地址:

https://github.com/hufanglei/java-design/tree/decorator


装饰者模式在JDK应用的源码分析


88b9988b40447cb37c7e3c492d49867f.png


相关文章
|
7月前
|
设计模式 Java
Java设计模式【十】:装饰者模式
Java设计模式【十】:装饰者模式
54 0
|
16天前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
32 2
|
22天前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
1月前
|
设计模式 Java Kotlin
Kotlin - 改良设计模式 - 装饰者模式
Kotlin - 改良设计模式 - 装饰者模式
28 4
|
1月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
42 0
|
2月前
|
设计模式 Java Kotlin
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
27 0
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
23 0
|
6月前
|
设计模式 Java API
程序技术好文:设计模式:装饰者模式
程序技术好文:设计模式:装饰者模式
28 0
|
7月前
|
设计模式 Java
【设计模式系列笔记】装饰者模式
装饰者模式是一种结构型设计模式,它允许你通过将对象放入包含行为的特殊封装类中来为原始对象添加新的行为。这种模式可以动态地将责任附加到对象上,而不影响其它对象。
76 11
下一篇
DataWorks