设计模式 (十)装饰模式(Decorator)

设计模式 (十)装饰模式(Decorator)

ID:40313348

大小:67.50 KB

页数:5页

时间:2019-07-30

设计模式 (十)装饰模式(Decorator)_第1页
设计模式 (十)装饰模式(Decorator)_第2页
设计模式 (十)装饰模式(Decorator)_第3页
设计模式 (十)装饰模式(Decorator)_第4页
设计模式 (十)装饰模式(Decorator)_第5页
资源描述:

《设计模式 (十)装饰模式(Decorator)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、设计模式(十)装饰模式(Decorator)装饰模式(Decorator)就是使用被装饰的一个子类的实例,在客户端将这个子类的实例委托给装饰类。装饰模式是结成关系的一个替代方案。简单的装饰模式是原理图入下:装饰模式以对客服端透明的方式增添了对象的功能,其在与动态的给对象添加了责任,当然这里的继承便是静态的。其中重要的地方时装饰对象和真是对象有相同的接口,这样客户端就可以和真是对象一样的交互方式和装饰对象交互,然后装饰对象把所有从客户端接收过来的请求全部转发给真是对象,然后在返还给客户端,这样装饰对象就可以再转发

2、前或者以后添加一些附加功能而不影响对真是对象的操作,这样在不改变原有类的基础想,可以实现对于原有类的这种额外功能的实现,增强了程序的复用性。同时装饰模式比继承好的地方就是,装饰模式可以动态的对已经存在的类进行任意的组合,实现想要的功能,而继承是静态的实现,不能改变原有类的实现,如果要添加更多的功能,只有添加更多的派生类来实现,这个简洁在下面的例子里对于最后一次打印输出就有很明显的效果,定义好了两个装饰类以后,不用再定义第三个就可以实现两个装饰类排列组合的效果。下面就简单的做了一个通过对于手机接电话的一个扩展,接

3、听电话之前有一个彩铃,接受电话之后会回拨一段广告,这样就出来了下面的例子:[java] viewplaincopy1.package com.designpattern.decorator;  2.  3.public interface Phone {  4.    public void recevieCall(String name);  5.}  [java] viewplaincopy1.package com.designpattern.decorator;  2.  3.public class 

4、ChinaMobile implements Phone {  4.  5.    @Override  6.    public void recevieCall(String name) {  7.        System.out.println("step recevie " + name + " call");  8.    }  9.  10.}  [java] viewplaincopy1.package com.designpattern.decorator;  2.  1.public ab

5、stract class Decorator implements Phone {  2.  3.    private Phone phone;  4.  5.    public Decorator(Phone phone) {  6.        this.phone = phone;  7.    }  8.  9.    @Override  10.    public void recevieCall(String name) {  11.        this.phone.recevieCal

6、l(name);  12.    }  13.  14.}  [java] viewplaincopy1.package com.designpattern.decorator;  2.  3.public class RingBeforeChinaMobileDecorator extends Decorator {  4.  5.    public RingBeforeChinaMobileDecorator(Phone phone) {  6.        super(phone);  7.    }

7、  8.  9.    @Override  10.    public void recevieCall(String name) {  11.        System.out.println("step ring before recevie " + name + "call");  12.        super.recevieCall(name);  13.    }  14.  15.}  [java] viewplaincopy1.package com.designpattern.decor

8、ator;  2.  3.public class AdAfterChinaMobileDecorator extends Decorator {  4.  5.    public AdAfterChinaMobileDecorator(Phone phone) {  6.        super(phone);  7.    }  1.  2.    @Override  3. 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。