Java装饰者设计模式
2019-02-20 本文已影响13人
程序员三千_
装饰者设计模式
使用场景:
给某个对象的功能进行扩展时,可以考虑使用装饰者设计模式。
在IO流这部分内容中,JDK的源码使用了大量的装饰者设计模式。比如BufferedReader可以对FileReader进行装饰。
以去拉面馆吃拉面为例,一碗面做好后都会向里面加料装饰,所以先定义一个装饰拉面的接口,提供一个加料的方法:
创建一个拉面(Noodle)类实现NoodleDecorate接口
普通的拉面做好之后,有人爱吃辣椒,想在拉面中添加辣椒,创建一个辣椒拉面(ChiliNoodle)类
在实际生活中你去拉面馆点了一碗拉面,做好之后如果你爱吃辣椒的话可以向普通拉面里面加点辣椒变成辣椒拉面(所以辣椒拉面里要传入普通拉面的对象),而不是让厨师重新做一碗辣椒拉面。
装饰者设计模式的优点:
不用修改被装饰对象的源码,装饰者与被装饰者耦合度不高。