Java 设计---Proxy 代理模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HZMand1/article/details/83787221

何谓代理模式

       代理模式是指客户端不直接调用服务对象,而是通过代理服务去调用对象。

应用场景

         1.当需要为一个对象在不同的地址空间提供局部的代表时;此时的代理模式是远程代理。

      目的:

           a.隐藏一个对象存在于不同的地址空间的事实;

            b.远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求

           2.创建开销非常大的对象时,此时的代理模式称为虚拟代理:通过使用过一个小的对象代理一个大对象。

        目的:

             减少系统的开销。

           3.控制对原始对象的访问时,此时的代理模式称为保护代理:控制目标对象的访问,给不同用户提供不同的访问权限

          目的:

               用来控制对真实对象的访问权限

             4.需要在访问对象时附加额外操作时,此时的代理模式称为智能引用代理,额外操作包括耗时操作、计算访问次数等等 

           目的:

               在不影响对象类的情况下,在访问对象时进行更多的操作

优缺点

           1.可以很好的保护目标对象。

           2.协调调用者和被调用者,降低了系统的耦合度

            a.增加代理会降低客户端对实际对象访问时间

            b.增加系统的复杂性

代码实现

       静态代理:

//create interface
public interface Subject {

    public void init();
}

//create Real Subject
public RealSubject implements Subject {

    @Override
    public void init (){
        System.out.printl("Proxy 静态代理");
    }
}

//create Proxy Subject
public ProxySubject implements Subject {
    
    private Subject subject;

    public ProxySubject(Subject subject) {
        this.subject = subject;
    }

    @Override
    public void init(){
        subject.init();
    }
}

//Test 
public class Client{
    public static void main(String[] org){
        ProxySubject proxySubject = new ProxySubject();
        proxySubject.init();
    }
}

动态代理:

其实在很多配置文件 都有看到过,在需要的时候初始化对象。

猜你喜欢

转载自blog.csdn.net/HZMand1/article/details/83787221