1.3:装饰对象:装饰者模式

1:开放-关闭原则


1.3:装饰对象:装饰者模式_第1张图片


2:装饰者模式,一个完美实现“开放-封闭原则”的设计模式。

记住这么一句话:装饰者类反应出被装饰的组件类型。(事实上,他们具有相同的类型,都经过接口或继承实现)

3:认识装饰者模式


1.3:装饰对象:装饰者模式_第2张图片


1.3:装饰对象:装饰者模式_第3张图片

4:比较典型的例子“星巴克饮料”

重点理解下面几句话:

(1)装饰者和被装饰者拥有共同的类型(可以通过继承实现,也可以通过接口实现),这样装饰者才能够拥有替代被装饰者的能力。

(2)被装饰者的行为,来自于装饰者和基础组件,或者与其他装饰者之间的组合关系。

(3)通常装饰者模式是采用抽象类的,但是在Java中可以使用接口。所以具体写代码时,可以自己考虑。

(4)看到下面的星巴克咖啡图了吗?想想怎么写代码?


1.3:装饰对象:装饰者模式_第4张图片

(5)咖啡种类:Beverage(饮料)

综合:HouseBlend

深焙:DarkRoast

低咖啡因:Decaf

浓缩:Espresso

(6)配料种类:Condiment Decorator(调味品装饰)

牛奶:Milk

摩卡:Mocha

豆浆:Soy

奶泡:Whip

(7)星巴克咖啡类图


1.3:装饰对象:装饰者模式_第5张图片


5:真实世界的装饰者,java中I/O


1.3:装饰对象:装饰者模式_第6张图片

上图中可以看到:FilterInputStream是所有InputStream的抽象装饰者,InputStream是被装饰者的公共抽象组件。

(1)InputStream


1.3:装饰对象:装饰者模式_第7张图片

(2)FilterInputStream


1.3:装饰对象:装饰者模式_第8张图片

(3)jdk中IO包类图


1.3:装饰对象:装饰者模式_第9张图片

你可能感兴趣的:(1.3:装饰对象:装饰者模式)