设计模式(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


相关文章
|
设计模式 Java
Java设计模式【十】:装饰者模式
Java设计模式【十】:装饰者模式
99 0
|
4月前
|
设计模式 缓存 安全
【设计模式】【结构型模式】装饰者模式(Decorator)
一、入门 什么是装饰者模式? 装饰者模式(Decorator Pattern)是 Java 中常用的结构型设计模式,它能在不修改原有对象结构的前提下,动态地为对象添加额外的职责。 为什么要装饰者模式?
82 8
|
6月前
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
|
8月前
|
设计模式 存储
「全网最细 + 实战源码案例」设计模式——装饰者模式
装饰者模式(Decorator Pattern)是一种结构型设计模式,通过“包装”现有对象来为其添加额外功能,而无需修改原有代码。它通过创建装饰类来扩展对象的功能,而非继承。该模式由抽象构件、具体构件、抽象装饰者和具体装饰者组成,允许在运行时动态组合功能。穿衣服的例子很好地解释了装饰者模式:你可以根据需要一层层添加衣物,如毛衣、夹克和雨衣,每件衣物都扩展了基本行为,但不是你的一部分,可以随时脱掉。 优点包括灵活性、避免子类爆炸和符合开闭原则;缺点是可能增加复杂性和难以理解。适用于希望在不修改代码的情况下为对象新增行为的场景,尤其当继承难以实现或不可行时。
133 15
|
9月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
105 2
|
10月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
10月前
|
设计模式 Java Kotlin
Kotlin - 改良设计模式 - 装饰者模式
Kotlin - 改良设计模式 - 装饰者模式
61 4
|
10月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
11月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
82 0
|
11月前
|
设计模式 Java Kotlin
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
98 0