Java 设计模式 之 代理模式与装饰模式的区别
来源:互联网 发布:ipad4下载软件 编辑:程序博客网 时间:2024/06/16 03:58
最近在学习程序开发之设计模式,在网上找到一篇很不错的文章。这篇文章很详细地讲解了程序开发过程的中二十三中设计模式。文章链接如下:
http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html
我比较了代理模式与装饰模式,发现两者之间的区别很小:
相同点:
1. 两种模式都创建了一个接口;
2. 两种模式都创建了一个原始类并实现了上边的接口;
3. 两种模式都创建了另外一个类并实现上边的接口且将原始类作为其一个成员变量。 该类在代理模式中称为代理类, 而在装饰模式中成为装饰类
不同点:
1. 代理类中会添加额外的私有方法并被接口方法调用,可以在接口方法调用前和调用后对输入参数或输出结果加以控制;
2. 而装饰模式没有添加额外的私有方法,而是在接口方法中直接添加一些功能并调用成员对象的接口方法,以起到丰富成员对象的方法。
package com.design.pattern.structure.decorator;public interface ISourceable {public void method();}
package com.design.pattern.structure.decorator.impl;import com.design.pattern.structure.decorator.ISourceable;public class Source implements ISourceable {@Overridepublic void method() {System.out.println("Source.....");}}
package com.design.pattern.structure.decorator.impl;import com.design.pattern.structure.decorator.ISourceable;public class Decorator implements ISourceable{private ISourceable source;public Decorator(ISourceable source) {super();this.source = source;}@Overridepublic void method() {System.out.println("Before decorator");this.source.method();System.out.println("After decorator");}}代理模式代码:
package com.design.pattern.structure.proxy;public interface Sourceable {public void method();}package com.design.pattern.structure.proxy.impl;import com.design.pattern.structure.proxy.Sourceable;public class Source implements Sourceable {@Overridepublic void method() {System.out.println("This is a original method!!");}}package com.design.pattern.structure.proxy.impl;import com.design.pattern.structure.proxy.Sourceable;public class Proxy implements Sourceable {private Source source;public Proxy(Source source) {super();this.source = source;}@Overridepublic void method() {before();source.method();after();}private void before() {System.out.println("Do something before calling the original method");}private void after() {System.out.println("Do something after calling the original method");}}
阅读全文
0 0
- 设计模式之--装饰模式与代理模式的区别
- Java 设计模式 之 代理模式与装饰模式的区别
- java设计模式之装饰模式代理模式区别
- Java模式之装饰者模式&代理模式 装饰模式与代理模式区别
- java 设计模式中 装饰者模式 与 代理模式的区别
- 设计模式之代理模式和装饰者模式的区别(java)
- 代理模式与装饰模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 代理模式与装饰模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- maven编译spark源码(spark-2.3.0)
- Linux mount 硬盘挂载
- 转载:http://blog.csdn.net/u010128736/ ORB-SLAM2详解(二)代码逻辑
- 归并排序
- LitePal——Android数据库框架完整使用手册
- Java 设计模式 之 代理模式与装饰模式的区别
- c++一般函数与虚函数的区别
- Webservice 入门级教程(带图片)【转载】
- vs.Net 2003 安装
- 对jquery里面的on()方法的理解
- Log4j使用笔记
- CodeForces
- 软件开发的基本步骤
- Maven,jdk,Eclipse,Tomcat,Spring环境的搭建和使用