代理模式(Proxy)
1. 定义:对其它对象提供一种代理,以控制对这个对象的访问。
理解:在某些情况下,一个对象不想或者不能引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
2. 代理模式的角色:
抽象角色: 其实就是真实角色和代理角色将实现的接口。
代理角色: 实现抽象角色(接口)的类,其内部含有对真实对象的引用,从而能操作真实对象,同时,代理对象提供与真实对象相同的接口(因为都实现抽象角色),以便能随时代替真实对象。
真实角色: 也是实现抽象角色(接口)的类,代理角色所代表的的真实对象。
举例:
1 //抽象角色,接口 2 interface Subject{ 3 public abstract String say(String name, int age); 4 } 5 6 //真实角色,实现接口 7 class RealSubject implements Subject{ 8 9 public String say(String name, int age){ 10 return "姓名:"+name+",年龄"+age; 11 } 12 } 13 14 //代理角色,实现接口,且内部成员包含对真实角色的引用 15 class ProxySubject implements Subject{ 16 private Subject sub = null; 17 public ProxySubject(Subject sub){ 18 this.sub = sub; 19 } 20 21 public String say(String name, int age){ 22 return this.sub.say(name,age); 23 } 24 } 25 26 public class ProxyDemo{ 27 public static void main(String args[]){ 28 Subject sub = new ProxySubject(new RealSubject()); 29 String info = sub.say("bluesky",30); 30 System.out.println(info); 31 } 32 33 }
以上的代码操作实际上是称为静态代理,因为一个代理类只能为一个接口服务。


浙公网安备 33010602011771号