简单纪要:代理模式

代理模式理解:

使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上。

代理模式 :静态代理  显式的指明了代理类和被代理类

1:创建提供代理的服务类接口

//方便真实对象实现 并重写,书写真实访问信息
interface
NetWork { public void browse(); }

2:创建被代理类

//被代理类 实现服务接口
class
RealServer implements NetWork { @Override public void browse() { System.out.println("真实服务器联网浏览网页"); } }

3:创建代理类 

//代理类声明 服务接口类的属性 ,并重写服务接口的方法,添加被代理类实现不了的操作
class
ProxyServer implements NetWork { private NetWork work; public ProxyServer(NetWork work) { this.work = work; } public void check() { System.out.println("检查网络连接是否通畅"); }
@Override
public void browse() { check(); System.out.println("代理服务器代理真实服务器操作:"); work.browse(); } }

4:测试单元

 public static void main(String[] args) {
     //创建被代理对象
        NetWork work = new RealServer();
     //实现代理
        ProxyServer proxy = new ProxyServer(work);
     //调用被代理方法
        proxy.browse();

    }

 静态代理的缺点:

①代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展。

②同时,每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。

代理模式 :动态代理  动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象

1:创建提供代理的服务类接口

//方便真实对象实现 并重写,书写真实访问信息
interface NetWork { public void browse(); }

2:创建被代理类

//被代理类 实现服务接口
class RealServer implements NetWork {
    @Override
    public void browse() {
        System.out.println("真实服务器联网浏览网页");
    }
}

3:创建代理类

 class DynamicProxyHandler implements InvocationHandler {

    private Object object;

    public DynamicProxyHandler(final Object object) {
        this.object = object;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("代理浏览网页准备");
        Object result = method.invoke(object, args);
        System.out.println("代理浏览网页后");
        return result;
    }
}

3:创建测试类

 public static void main(String[] args) {

        NetWork work = new RealServer();

        NetWork proxyServer = (NetWork)Proxy.newProxyInstance(NetWork.class.getClassLoader(),new Class[]{NetWork.class},new DynamicProxyHandler(work));

        proxyServer.browse();

    }
原文地址:https://www.cnblogs.com/Rnan/p/10675591.html