装饰模式(Decorator)

2017-06-27  本文已影响0人  lyu571

动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。

类型

结构型

简介

装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。

参与者

在装饰模式中,为了让系统具有更好的灵活性和可扩展性,我们通常会定义一个抽象装饰类,而将具体的装饰类作为它的子类。

用法

代码助记

客户端并不会觉得对象在装饰前和装饰后有什么不同,对客户端透明。

一次装饰

将具体构件对象注入装饰类中。

嵌套(多次)装饰

将一个已经装饰过的装饰子类对象再注入装饰类中。

两种模式

开发过程中,具体装饰类中有可能有新增的方法需要调用。这样客户端声明对象时,不能统一使用抽象构件类型定义,而需要将调用新增方法的地方使用具体装饰类来声明。这种情况称为非透明,其实是由多态中向上转型后不能再调用子类中新增方法引入的。

透明装饰模式(Transparent)
半透明装饰模式(Semi-transparent)

总结

优点
缺点
上一篇 下一篇

猜你喜欢

热点阅读