装饰模式

1、解决什么问题?

在修车厂里,有各种各样的汽车,奔驰、宝马、奥迪、卡迪拉克、丰田。当我们为这些汽车喷漆时,我们通常都是在喷漆车间为汽车喷漆,而不是为每种车型各自搞一个喷漆车间。

将上述问题转换到软件设计中,有奔驰、宝马、奥迪、卡迪拉克、丰田五个品牌类。当它们需要增加喷漆的方法时,为了保持单一职责,最直接的方法就是分别继承这五个品牌类来实现喷漆功能,如此以来就相当于增加了五个喷漆车间,这显然是不合理的!汽车保养店的老板当然不会傻到这种地步,因为只需要搞一个喷漆车间就够了(忽略排队等待喷漆的时间),这种省钱的方式就是装饰模式。

2、什么是装饰模式?

对已经存在的某些类进行装饰,以此来扩展一些功能。

3、UML图

装饰模式包含如下角色:
  • Component :抽象构件角色
  • ConcreteComponent:具体构件角色(相当于奔驰、宝马、奥迪等品牌)
  • Decorator:装饰角色
  • ConcreteComponent:具体装饰角色(喷漆车间)
4、使用场景
  • IO输入输出流设计
  • servlet中request对象的各种包装设计

results matching ""

    No results matching ""