java设计模式课件chap06.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java设计模式课件chap06

Java设计模式 * * 软件学院 宋 波 第6章 装饰模式 * * 装饰模式(别名:包装器)——动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。 Decorator Pattern(Another Name: Wrapper) ——Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. 6.1 概述 * * 解读——装饰模式是动态地扩展一个对象的功能,而不需要改变原始类代码的一种成熟模式。 在装饰模式中,“具体组件”类和“具体装饰”类是该模式中的最重要的两个角色。 6.1 概述 * * 具体组件类的实例称作“被装饰者”,具体装饰类的实例称为“装饰者”; 具体装饰类需要包含有“具体组件”类的一个实例的引用,以便装饰“被装饰者”。 麻雀类(具体组件类) 的实例——被装饰者 调用fly 麻雀类的fly方法 能飞100米 具体装饰类的 实例——装饰者 调用fly 麻雀类(具体组件类)的fly方法 能飞100米 装饰类的elefly方法 能飞50米 具体装饰类的fly方法 能飞150米 6.2 装饰模式的结构与使用 * * 装饰模式的结构中包括四种角色: 抽象组件(Component)—定义了被装饰者需要进行“装饰”的方法; 具体组件(ConcreteComponent) —是抽象组件的一个子类,具体组件的实例称作“被装饰者”; 装饰(Decorator) —是抽象组件的一个子类,它包含一个抽象组件声明的变量以保存被装饰者的引用; 具体装饰(ConcreteDecotator) —是装饰类的一个非抽象子类,它的实例称作“装饰者”。 * * 6.2.1 装饰模式的UML类图 麻雀的实例 具体装饰类的 实例——装饰者 调用fly 麻雀类(具体组件类)的fly方法 能飞100米 装饰类的elefly方法 能飞50米 具体装饰类的fly方法 能飞150米 “装饰模式”分析 * * 具体组件和装饰类都是抽象组件的子类; 抽象组件声明的对象,即可以存放被装饰者的引用,也可以存放装饰者的引用; 对用户而言,装饰者所实现的抽象组件中的方法是“被装饰者”相应方法的改进或修正; * * 6.2.2 装饰模式的结构的描述与使用 假设系统中有一个Bird抽象类以及Bird类的一个子类Sparrow。 Sparrow类实现了Bird类的fly方法,使得Sparrow类创建的对象(麻雀)调用fly方法能连续飞行100米。 现在,用户需要2只鸟,无论是哪一只,必须分别能连续飞行150米和200米。 * * 6.2.2 装饰模式的结构的描述与使用 1.抽象组件 : Bird.java // 规定了具体组件要实现的方法 public abstract class Bird { public abstract int fly(); } * * 2.具体组件 : Sparrow.java // 实现fly方法时,返回值为100米 public class Sparrow extends Bird { public final int DISTANCE=100; public int fly() { return DISTANCE; } } * 3.装饰 (Decorator): Decorator.java // 包含有一个Bird声明的变量,保存被装饰者的应用 public abstract class Decorator extends Bird { protected Bird bird; public Decorator() { } public Decorator(Bird bird) { this.bird=bird; } } * 4.具体装饰(ConcreteDecotator): SparrowDecorator.java public class SparrowDecorator extends Decorator { public final int DISTANCE=50; //eleFly方法能飞50米 SparrowDecorator(Bird bird) { super(bird); } public i

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档