设计模式-静态代理模式

来源:互联网 发布:mac重装系统下载慢 编辑:程序博客网 时间:2024/06/05 18:51

1 代理模式在作用是:为其它对象提供一种代理难以控制对这个对象在访问.

2 在某些情况下,一个客户不想或者不能直接引用另外一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

3 代理模式一般涉及到的角色有

    -a抽象角色:声明真是对象和代理对象的共同接口

package com.cai.proxy;public abstract class Subject {public abstract void request();}


 

    -b代理角色代理对象角色内部含有对真实对象的应用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口,以便任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其它的操作,相对于对真实对象进行封装

package com.cai.proxy;public class ProxySubject extends Subject {private RealSubject realSubject ;//代理模式内部引用了真实角色public void request() {preRequest();//在真实角色操作之前所附加的操作if(null == realSubject){realSubject = new RealSubject();}realSubject.request();//真实角色所完成的事情postRequest();//在真实角色操作之后所附加的操作}private void preRequest(){System.out.println("pre request");}private void postRequest(){System.out.println("post request");}}


 

    -c真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。

package com.cai.proxy;public class RealSubject extends Subject {@Overridepublic void request() {System.out.println("From RealSubject");}}


测试类

package com.cai.proxy;public class Client {public static void main(String[] args) {Subject subject = new ProxySubject();subject.request();}}


 4 java动态代理类位于java.lang.reflect包下

 

原创粉丝点击