- 3
- 0
- 约2.2千字
- 约 14页
- 2018-12-31 发布于湖南
- 举报
第八讲 装饰(Decorator)模式 场景 Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“最好的礼物,就是爱你的Fita”,再到街上礼品店买了个像框,再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来......,我们都是Decorator,最终都在修饰我这个人呀 装饰模式概述 装饰模式是动态地扩展一个对象的功能,而不需要改变原始类代码的一种成熟模式。 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。 装饰模式概述 使用装饰模式扩展功能不会产生类爆炸。它采用的是合成方式,比继承方式更加灵活。 装饰模式要解决的问题:提供一种修改类的行为,而避免创建众多的派生类的途径。 装饰模式的角色 抽象组件(Component) 具体组件(ConcreteComponent) 装饰(Decorator) 具体装饰(ConcreteDecotator) 装饰模式的UML类图 装饰模式示例 1.抽象组件 : Bird.java public abstract class Bird{ public abstract int fly(); } 装饰模式示例 2.具体组件 : Sparrow.java public class Sparrow extends Bird{ public final int DISTANCE=100; public int fly(){ return DISTANCE; } } 装饰模式示例 3.装饰 (Decorator): Decorator.java 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 int fly(){ int distance=0; distance=bird.fly()+eleFly(); return distance; } private int eleFly(){ //装饰者新添加的方法 return DISTANCE; } } 装饰模式示例 5.应用 Application.java public class Application{ public void needBird(Bird bird){ int flyDistance=bird.fly(); System.out.println(这只鸟能飞行+flyDistance +米); } public static void main(String args[]){ Application client=new Application (); Bird sparrow=new Sparrow(); Bird sparrowDecorator1= new SparrowDecorator(sparrow); Bird sparrowDecorator2= new SparrowDecorator(sparrowDecorator1); client.needBird(sparrowDecorator1); client.needBird(sparrowDecorator2); } } 使用装饰模式的要点 装饰者与被装饰者具有相同的类型 可以用多个装饰者装饰一个对象 由于装饰者与被装饰者具有相同的类型,我们可以用装饰后的对象代替原来的对象 对象可以在任何
您可能关注的文档
- “雄鹰”飞腾计划企化案.ppt
- 《算法艺术与信息学竞赛》学习指导.ppt
- 2.3.4 大分子链的柔顺性及其影响因素.ppt
- 8 成语故事介绍.ppt
- 25 小鸟,请原谅我.ppt
- TOEFL iBT - Speaking Section - Independent Questions 1 & 2托福考试口试部分.ppt
- 艾青的诗课件.ppt
- 爱心墙作文评奖.ppt
- 场面描写相关.ppt
- 成语考试题目.ppt
- 统编版2025年春季新版七年级下册历史 第21课 明清时期的科技与文化 教案.docx
- 雅安雨城法院书记员招聘考试真题库2025.docx
- 2026届安徽合肥市高考一模高考语文试卷试题(含答案详解).pdf
- 【专题研究】国内外城市更新研究的最新进展.pdf
- 【专题研究】老旧城区改造居民满意度影响因素研究——以遂宁市老旧城区改造为例.pdf
- 【专题研究】关于旧城空间改造理论与创意设计案例的几点思考.pdf
- 西藏拉萨市高三下学期期末物理备考重点详解.docx
- 泾县法院书记员招聘笔试真题2025.pdf
- 2026年春【苏教版】-六年级数学下册-面积的变化.pptx
- 2026年春【苏教版】-六年级数学下册-7.pptx
原创力文档

文档评论(0)