代理模式
定义与类型
定义:为其他对象提供一种代理,以控制对这个对象的访问。
代理对象在客户端和目标对象之间起到中介的作用,可去掉功能服务或增加额外的服务。
类型:结构型
几种代理方式:
远程代理–为不同地理的对象,提供局域网代表对象—通过远程代理来模拟各个店铺的监控
虚拟代理–根据需要将资源消耗很大的对象进行延迟-真正需要的时候进行创建–比如说先加载文字-图片是虚拟的-再加载
保护代理–控制一个对象的访问权限–权限控制
智能引用代理–火车票代售处
静态代理 & 动态代理
静态代理
共同接口:真实的对象和代理类共同实现的接口,规范方法定义。
真实对象:实现共同接口,可以独立运行,具备完整功能的对象。
代理类:对真实对象的增强,组合了真实对象。
动态代理
定义:通过接口中的方法名在动态生成的代理中动态调用实现类中的同名方法,一定是接口。JDK动态代理利用了JDK API,动态地在内存中构建代理对象,从而实现对目标对象的代理功能。
实例
public class Proxy implements Subject {
private Subject target;
public Proxy(Subject s) {
target = s;
}
public void request(int id) {
System.out.println("Proxy log : " + id);
target.request(id);
}
public void setTarget(Subject realSubject) {
this.target = realSubject;
}
}