码迷,mamicode.com
首页 > 编程语言 > 详细

java实现23种设计模式之代理模式

时间:2019-04-22 11:57:17      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:method   增加   rgs   ceshi   pac   维护   eth   http   设计模式   

看代码:

package com.ceshi7;

public interface Sourceable {
    public void method();
}
package com.ceshi7;

public class Source implements Sourceable{

    @Override
    public void method() {
        System.out.println("这是原方法!");
    }

}
package com.ceshi7;

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("代理之后!");
    }
    private void before() {
        System.out.println("代理之前!");
    }
}
package com.ceshi7;

public class ProxyTest {
    public static void main(String[] args) {
        Sourceable source = new Proxy();
        source.method();
    }
}

测试结果:

技术图片

忽然发现该代理模式和之前的装饰器模式极其相似。

区别仅在于需要用到的装饰器模式调用时引入了一个对象,而代理模式并没有;

但是其中思想并不同,装饰器模式只是将引用的类进行装饰,也就是用来扩展;

而代理模式则是用来代理处理一些相关事物。

所以修改的话使用代理模式是对代理类进行修改。装饰器模式是对接口的实现进行扩展。

一个是修改,一个是增加。两者经常结合使用。

感觉是增加一个装饰类仿佛是增加一个代理类,可以这么理解。

代理模式的应用场景:
如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:
1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则,即闭包原则。
2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。
使用代理模式,可以将功能划分的更加清晰,有助于后期维护。
即我们需要修改时只要修改代理类就可以了。

java实现23种设计模式之代理模式

标签:method   增加   rgs   ceshi   pac   维护   eth   http   设计模式   

原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10749278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!