其他设计模式
java单例模式
java建造者模式
java策略模式
java代理模式
java观察者模式
java适配器模式
java外观模式
生活中的代理模式
经典剧《武林外传》中,有一集是秀才让小六代其求婚,当播放到最后片段,剧中,郭芙蓉对吕秀才狠狠地说:“吕秀才,是你让小六向我求婚的吧?”。
“造物弄人!”吕秀才惨惨地答道,“这只是一个玩笑”
“哦!。。。玩笑!”郭芙蓉冷笑地说:“我杀了你!”
秀才速奔出去,郭芙蓉口中叫着“你给我站住”,跟着跑了出去。
吕秀才让小六代其向郭芙蓉求婚,这就是代理模式!
秀才让小六代其求婚实例讲解
步骤1: 创建抽象对象接口(Subject):声明吕秀才(真实对象)需要让燕小六(代理对象)帮忙做的事(求婚)
public interface Subject {
public void request();
}
步骤2: 创建真实对象类(RealSubject),即“吕秀才”
public class RealSubject implements Subject{
@Override
public void request() {
System.out.print("芙蓉妹妹,嫁给我");
}
}
步骤3:创建代理对象类(Proxy),即“燕小六”,并通过代理类创建真实对象实例访问其方法
public class Proxy implements Subject{
RealSubject realSubject;
@Override
public void request() {
if (realSubject==null){
realSubject=new RealSubject();
}
realSubject.request();
}
}
步骤4:客户端调用
public static void main(String[]args) {
Proxy proxy=new Proxy();
proxy.request();
}
代理模式应用
第一种 远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
例如:当我在应用程序项目中加入一个web引用,引用一个WebService,此时项目中会生成一个WebReference的文件夹和一些文件,它们就是代理,这就使得客户端程序调用代理就可以解决远程访问的问题
第二种虚拟代理,是根据需要创建开销很大的对象,通过它存放实例化需要很长时间的真实对象。
例如:我们打开一个很大的HTML网页时,里面有很大文字和图片,你可以很快的看见所有文字,但图片却是一张张下载后才能看到,那些未打开的图片框,就是通过虚拟代理来替代了真实图片,此时代理存储了真实图片的路径很尺寸。
第三种安全代理,用来控制真实对象方式时的权限,一般用于对象应该有不同的访问权的时候。
第四种智能指引,是指当调用真实对象时,代理处理另外一些事。