设计模式之代理模式
2016-07-16 16:30
246 查看
代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。先来看看关系图:
![](http://img.my.csdn.net/uploads/201211/29/1354197582_1664.PNG)
根据上文的阐述,代理模式就比较容易的理解了,我们看下代码:
测试类:
输出:
before proxy!
the original method!
after proxy!
代理模式的应用场景:
如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:
1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。
2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。
使用代理模式,可以将功能划分的更加清晰,有助于后期维护!
根据上文的阐述,代理模式就比较容易的理解了,我们看下代码:
public interface Sourceable { public void method(); }
public class Source implements Sourceable { @Override public void method() { System.out.println("the original method!"); } }
public class Proxy implements Sourceable { private Source source; public Proxy(){ super(); this.source = new Source(); } @Override public void method() { before(); source.method(); atfer(); } private void atfer() { System.out.println("after proxy!"); } private void before() { System.out.println("before proxy!"); } }
测试类:
public class ProxyTest { public static void main(String[] args) { Sourceable source = new Proxy(); source.method(); } }
输出:
before proxy!
the original method!
after proxy!
代理模式的应用场景:
如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:
1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。
2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。
使用代理模式,可以将功能划分的更加清晰,有助于后期维护!
相关文章推荐
- APP开发实战88-Activity切换动画
- Mybatis深入了解(五)----动态SQL
- android学习之展示图片资源
- cf_514C(字符串哈希)
- Git冲突
- 开发感悟
- APP开发实战87-属性动画
- Codeforces 697B. Barnicle(模拟)
- string
- linux中搜索文件
- poj 3368 Frequent values -Sparse-Table
- PHP之判断输入的字符串是不是回文
- DNS域传输漏洞
- 5.MFC实现简单的COM
- 后台进程和后台任务
- FXAA
- session如何加入mysql库
- 设计模式之装饰模式
- 前端开发人员必须了解的七大技能图谱
- Android 微博分享及其注意事项