装饰模式概述:动态的给一个对象增添一些额外的功能或修饰。就扩展功能而言,装饰着模式提供了一种比使用子类更加灵活的替 代方案。装饰模式可以在不改变一个对象功能的基础上给对象增添额外的新行为。
例如对新房进行装饰:并没有改变房屋用来居住的本质,但可以让房子变得更漂亮,更舒服,更能满足居家的需求。
组成角色
抽象构件类:给出一个抽象接口,以规范准备接收附加责任的对象
具体构建类:定义一个将要接收附加责任的类
抽象装饰类:持有一个构件对象的实例,并定义一个与抽象构件接口一致的接口
具体装饰类:负责给构件对象“贴上”附加的责任
示例:在代码中我以Java课本书为例,分别使用书名,作者,以及页数对书进行装饰。当然也可以增添更多具体装饰类进行装饰。
最后的测试类及运行结果