1:开放-关闭原则
2:装饰者模式,一个完美实现“开放-封闭原则”的设计模式。
记住这么一句话:装饰者类反应出被装饰的组件类型。(事实上,他们具有相同的类型,都经过接口或继承实现)
3:认识装饰者模式
4:比较典型的例子“星巴克饮料”
重点理解下面几句话:
(1)装饰者和被装饰者拥有共同的类型(可以通过继承实现,也可以通过接口实现),这样装饰者才能够拥有替代被装饰者的能力。
(2)被装饰者的行为,来自于装饰者和基础组件,或者与其他装饰者之间的组合关系。
(3)通常装饰者模式是采用抽象类的,但是在Java中可以使用接口。所以具体写代码时,可以自己考虑。
(4)看到下面的星巴克咖啡图了吗?想想怎么写代码?
(5)咖啡种类:Beverage(饮料)
综合:HouseBlend
深焙:DarkRoast
低咖啡因:Decaf
浓缩:Espresso
(6)配料种类:Condiment Decorator(调味品装饰)
牛奶:Milk
摩卡:Mocha
豆浆:Soy
奶泡:Whip
(7)星巴克咖啡类图
5:真实世界的装饰者,java中I/O
上图中可以看到:FilterInputStream是所有InputStream的抽象装饰者,InputStream是被装饰者的公共抽象组件。
(1)InputStream
(2)FilterInputStream
(3)jdk中IO包类图