<java与模式> ---电子书 page 425
装饰模式—Decorator
装饰模式有名包装模式,装饰模式以对客户端透明的方式来扩展对象的功能,是继承关系的一个替代的方案。
客户端并不会觉得装饰模式在装饰前和装饰后有什么不同,他可以在不使用更多的子类的情况下来进行对对象的功能加以扩展。结构图如下:
装饰模式原来被装饰类的一个子类的实例,把客户端的调用委派到被装饰类。他有以下组成:抽象构件,具体构件,装饰角色,具体装饰;他一般在下面这些情况使用他最好:
1、 需要扩展一个类的功能,或给一个类增加附加责任。
2、 需要动态的给一个对象增加功能,这些功能可能被动态的撤消。
3、 需要增加一些基本功能的排例组合而产生的非常大量的功能,从而使继承关系变得不现实。
优点:他可以灵活的增加一个类或对象的功能,也可以通过不同的具体装饰类的排例组合设计出更加复杂的,功能更强的类。
缺点:他虽然增加了一个类的灵活性,但同时他也给一个类的管理带来了复杂性。
posted on 2005-08-03 00:00
sky 阅读(202)
评论(0) 编辑 收藏