代理模式(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 }
复制代码

以上的代码操作实际上是称为静态代理,因为一个代理类只能为一个接口服务。

 

posted @ 2014-04-02 18:15  sky钦  阅读(139)  评论(0)    收藏  举报