预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共33页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第第1313章章 装饰模式装饰模式 主讲教师:程细柱韶关学院计算机系 本书主编:刘伟清华大学出版社 本章教学内容 装饰模式 9模式动机与定义 9模式结构与分析 9模式实例与解析 9模式效果与应用 9模式扩展 装饰模式 模式动机 装饰模式 模式动机 9一般有两种方式可以实现给一个类或对象增加功能: •继承机制,使用继承机制是给现有类添加功能的一种 有效途径,通过继承一个现有类可以使得子类在拥有 自身方法的同时还拥有父类的方法。但是这种方法是 静态的,用户不能控制增加行为的方式和时机。 •关联机制,即将一个类的对象嵌入另一个对象中,由 另一个对象来决定是否调用嵌入对象的行为以便扩展 自己的行为,我们称这个嵌入的对象为装饰器 (Decorator)。 装饰模式 模式动机 9装饰模式以对客户透明的方式动态地给一个对 象附加上更多的责任,换言之,客户端并不会 觉得对象在装饰前和装饰后有什么不同。装饰 模式可以在不需要创造更多子类的情况下,将 对象的功能加以扩展。这就是装饰模式的模式 动机。 装饰模式 模式定义 9装饰模式(DecoratorPattern):动态地给一个对象增 加一些额外的职责(Responsibility),就增加对象功能 来说,装饰模式比生成子类实现更为灵活。其别名也可 以称为包装器(Wrapper),与适配器模式的别名相同, 但它们适用于不同的场合。根据翻译的不同,装饰模式 也有人称之为“油漆工模式”,它是一种对象结构型模 式。 装饰模式 模式定义 9DecoratorPattern:Attachadditional responsibilitiestoanobjectdynamically. Decoratorsprovideaflexiblealternativeto subclassingforextendingfunctionality. 9Frequencyofuse:medium Component 装饰模式+operation() 模式结构 ConcreteComponentDecoratorcomponent +operation()+operation() component.operation(); ConcreteDecoratorAConcreteDecoratorB -addedState: +operation()+operation() +addedBehavior() super.operation(); addedBehavior(); 装饰模式 模式结构 9装饰模式包含如下角色: •Component:抽象构件 •ConcreteComponent:具体构件 •Decorator:抽象装饰类 •ConcreteDecorator:具体装饰类 装饰模式 模式分析 9与继承关系相比,关联关系的主要优势在于不会破坏 类的封装性,而且继承是一种耦合度较大的静态关 系,无法在程序运行时动态扩展。在软件开发阶段, 关联关系虽然不会比继承关系减少编码量,但是到了 软件维护阶段,由于关联关系使系统具有较好的松耦 合性,因此使得系统更加容易维护。当然,关联关系 的缺点是比继承关系要创建更多的对象。 9使用装饰模式来实现扩展比继承更加灵活,它以对客 户透明的方式动态地给一个对象附加更多的责任。装 饰模式可以在不需要创造更多子类的情况下,将对象 的功能加以扩展。 装饰模式 模式分析 9典型的抽象装饰类代码: publicclassDecoratorextendsComponent { privateComponentcomponent; publicDecorator(Componentcomponent) {this.component=component;} publicvoidoperation() {component.operation();} } 装饰模式 模式分析 9典型的具体装饰类代码: publicclassConcreteDecoratorextendsDecorator { publicConcreteDecorator(Componentcomponent) {super(component);} publicvoidoperation() { super.operation(); addedBehavior(); } publicvoidaddedBehavior() { //新增方法 } } 装饰模式 装饰模式实例与解析 9实例一:变形金刚 •变形金刚在变形之前是一辆汽 车,它可以在陆地上移动。当它 变成机器人之后除了能够在陆地 上移动之外,还可以说话;如果 需要,它还可以变成飞机,除了 在陆地上移动还可以在天空中飞 翔