作者网页:www.jcohy.com
我的学习笔记,记录学习过程中的笔记以及遇到的问题,以及我的一些经验总结。如果出现链接失效,或者想知道更多的内容等情况可以提交 Issues 提醒我修改相关内容。
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
- Subject:定义了RealSubject和Proxy的公共接口,这样就可以在任何使用RealSubject的地方可以使用Proxy
- RealSubject:定义Proxy代表的真实实体。
- Proxy:保存一个引用使得代理可以访问实体,并提供一个与Subject接口相同的接口,这样代理就可以用来代替实体。
- Client:
- 远程代理 为一个对象在不同的地址空间,提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实.例如,WebService在.Net中的应用。
- 虚拟代理 根据需要创建开销很大的对象,通过他来存放实例化需要很长时间的对象。例如,你打开了一个网页,里面有很多文字和图片。此时,你所看到的是所有文字,图片只有 在下载后才能看到。那些未打开的图片框,就是通过虚拟代理代替了真实的图片,存储了真是图片的路径和尺寸。
- 安全代理 用来控制真是对象的访问权限。一般用于对象拥有不同的访问权限。
- 智能代理 是指当调用真是对象的时候,代理处理另外一些事。
1.定义接口
public interface Subject {
void method();
}
2.RealSubject
public class RealSubject implements Subject {
@Override
public void method() {
System.out.println("afternoon");
}
}
3.Proxy
public class Proxy implements Subject {
private RealSubject realSubject;
public Proxy() {
realSubject = new RealSubject();
}
public void after() {
System.out.println("Good Night!");
}
@Override
public void method() {
before();
realSubject.method();
after();
}
public void before() {
System.out.println("Hello Moring");
}
}
4.Client
public class Client {
public static void main(String[] args) {
Subject su = new Proxy();
su.method();
}
}
5.result
Hello Moring
afternoon
Good Night!
- java.lang.reflect.Proxy
- java.rmi.*