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

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

👝下面我们把coffee包装到牛奶中去了


59976fd6f06e43a58a62d29cf55f49c1.png

成为了牛奶的obj


7444f2dfb86a45ac8ce39e15662bae30.png

5e16595181a94beca0522bcb5bfc06ab.png


👛我们进入到cost方法中去

b901603df44042f89030a760dc666bdf.png


754dd2be56b74cd28807f6197e0aecec.png


c309a503de2f4a9e8598f49f2556d94b.png


这里的getPrice就是自己的价格,然后加上obj的价格


3164fdad1374462da733d86ad3ad99a2.png


描述也是自己的描述加上obj的描述


d42bd78dda7e48389ef0378fb43b03de.png

👓现在我们往下走


2c65227cd40c4622bbcd239b73ad9596.png


又把牛奶包装到了巧克力当中去,这个时候就开始套娃了,大家发现没有



ce58c162d3a843c78609f3dc2095c48d.png


🎣接着我们又进入到了cost方法中去


8b2d69dfc5534e8fabcde4f9222a4bff.png

发现先加自己的价格

116ec308423b49c184a8b00a8ac3f9d9.png


然后进入obj的计算价格中去

babcda4c9ac3456ab6b5be12dd6990e0.png


☕️这个其实又变成牛奶的价格加上coffee的价格,这样一直递归下去,getDes方法也是如此


26de996558df42f483df422aa7a6194a.png


🍵现在我们如果再加一种coffee(新品种)



3f3302d0dca24ababe0831ea52765323.png


只需要继承我们的Coffee类,然后又开始无限套娃


4cee59343f974b47a79c6ab7275e85e7.png


这,就是装饰者模式

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



a1e27cd4d9494ee1b29a26b9df3ee464.png


🍼InputStream 是抽象类, 类似我们前面讲的 Drink


a9a4b0cadeca4908a50d8ac364f84252.png


🍺FileInputStream 是 InputStream 子类,类似我们前面的 DeCaf, LongBlack


fdf3b1af9f2a43359b1a43a1294d1bce.png

🍻 FilterInputStream 是 InputStream 子类:类似我们前面 的 Decorator 修饰者

bffbc4f3768d4c358601dac67a9ef2b2.png


🍸DataInputStream 是 FilterInputStream 子类,具体的修饰者,类似前面的 Milk, Soy 等



821616ca73944374922388f60819636a.png


🍹FilterInputStream 类 有 protected volatile InputStream in; 即含被装饰者,类似前面的obj


65f3ffb341994888adfe64b9630f7146.png


🍷 分析得出在 jdk 的 io 体系中,就是使用装饰者模式



9dd330e31cdf4b26ae2204f9a111866c.png


资料参考:https://www.bilibili.com/video/BV1G4411c7N4

代码地址:https://gitee.com/WangFuGui-Ma/design-pattern/tree/master/design

相关文章
|
7月前
|
设计模式 Java
Java设计模式【十】:装饰者模式
Java设计模式【十】:装饰者模式
51 0
|
6天前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
24天前
|
设计模式 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
【设计模式系列笔记】装饰者模式
装饰者模式是一种结构型设计模式,它允许你通过将对象放入包含行为的特殊封装类中来为原始对象添加新的行为。这种模式可以动态地将责任附加到对象上,而不影响其它对象。
74 11
|
7月前
|
设计模式 缓存 安全
设计模式-代理模式(静态代理、动态代理、cglib代理)、代理模式和装饰者模式的区别
设计模式-代理模式(静态代理、动态代理、cglib代理)、代理模式和装饰者模式的区别
|
设计模式
23种设计模式_MODE08装饰者模式_手写代码实现
23种设计模式_MODE08装饰者模式_手写代码实现