【设计模式】我终于读懂了装饰者模式。。。(上)

简介: 【设计模式】我终于读懂了装饰者模式。。。

👑星巴克咖啡订单项目(咖啡馆)


1)咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)

2)调料:Milk、Soy(豆浆)、Chocolate

3)要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便

4)使用 OO 的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。


👒装饰者模式定义


1)装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)

2)这里提到的动态的将新功能附加到对象和 ocp 原则,在后面的应用实例上会以代码的形式体现。


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



ad246d05f5324cf9b7a2022ed7f8809b.png


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


04fc01419ab24746bbe30b71d8b40a1a.png


我们准备最基础的drink类,不管coffee也好,调味品也好,都继承该抽象类

25aee819e1af4a929157d12989754d21.png

40bda2f805884289a0ea676c21c2c67a.png


准备我们的coffee类

bdb84cac58084e6aaaebe0596ea9bd1f.png

fd97cbd7948046ae8e0bb11d5da8d92a.png

下面有四个类型的coffee

分别是:

9ea2457bcb6e43e88232f82c22dc5a7e.png

8c239233dc76416b9de50d8e89563a77.png


1c144d6ee2214be597282649a111c2af.png


30af09b340544846ac35877016cf7754.png


然后我们还需要一个装饰者(可以理解为调味品的超类)


fb4b1724c1e341cc9588b19ea60a7a20.png


下面有三个调味品继承该类


48e8149f6c3445e9983b0d8a070dec87.png

分别是


ee3c2f5a315744d0a63d298e726b5eab.png

05c0453d794d4c729b8ff32d38344bd6.png

28b49a28d22b4c9088ffc851acc45d7c.png


有了这些之后就开始写我们的主方法

2a13d9d26bfa48dd88676a7340b935ba.png



e7489c072eb44be7b78d75234f663748.png


💼下面我们跟着代码debug下去看一下

👜这里我们new 了一个澳式黑咖啡



320370407b564c0d898906223aaf1137.png


8aaa6fb9edb7413a95dc8165987bd917.png

所以他有了描述和价格


d57ec06982654bc1817fef0f413bdc45.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