软件设计模式学习(十三)装饰模式
装饰者模式是一种用于替代继承的技术,它通过一种无须定义子类的方式给对象动态增加职责,使对象之间的关联关系取代类之间的继承关系。 模式动机 装饰者可以在不改变一个对象本身的基础上给对象增加额外的新行为,如一张照片,可以不改变照片本身,给她增加一个相框,使得它具有防潮功能,而且用户可以根据需要增加不同类型的相框。在软件开发中,类似给照片增加相框的情况随处可见,如给一个图形界面构件增加边框、滚动等新特性。一般有两种方式实现给一个类或对象增加行为: 继承机制 通过继承一个类现有类可以使子类在拥有自身方法的同时还拥有父类方法。但这种方式是静态的,用户不能控制增加行为的方式和时机。 关联机制 将一个类的对象嵌入另一个新对象中,由另一个对象来决定是否调用嵌入对象的行为并扩展自己的行为,我们称这个新对象(即另一个对象)为装饰类(Dectorator)。 模式定义 动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰者模式比生成子类对象实现更灵活。其别名也可以称为包装器(Wrapper)。 模式结构 Component(抽象构件) 抽象构件定义了对象的接口,可以给这些对象动态增加职责(方法)。抽象构件是具体构件和和抽象装饰类的共同父类,声明了在具体构件中实现的业务方法。 ConcreteComponent(具体构件) 具体构件定义了具体构件对象