注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的个人博客

欢迎访问我的网站www.shaccp.cn,学习软件编程

 
 
 

日志

 
 

Java 设计模式-代理模式(Proxy Pattern)  

2014-10-26 15:50:08|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 所谓代理,就是一个 人或者一个机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

     代理模式的角色:

  • 抽象主题角色:声明了真实主题和代理主题角色的共同接口,这样在任何使用真实主题的地方都可以使用代理主题。
  • 代理主题角色:代理主题角色持有真实主题角色的引用,从而可以在任何使用操作真实主题的角色;代理主题角色提供了和真实主题角色相同的接口,以便在任何时候可以替换真实主题角色。
  • 真实主题角色:定义了代理角色所代表的真实角色。
Java代码  收藏代码
  1. /** 
  2.  * 抽象的主题角色,声明了真实主题和代理主题的共同接口,这样在任何使用真实主题的地方都可以使用代理主题 
  3.  * @author zhangwei_david 
  4.  * @version $Id: AbstractTopic.java, v 0.1 2014年10月26日 上午7:52:11 zhangwei_david Exp $ 
  5.  */  
  6. public interface AbstractTopic {  
  7.     /** 
  8.      * 请求 
  9.      */  
  10.     public void request();  
  11. }  
  12.   
  13. /** 
  14.  * 
  15.  * @author zhangwei_david 
  16.  * @version $Id: RealTopic.java, v 0.1 2014年10月26日 上午7:54:04 zhangwei_david Exp $ 
  17.  */  
  18. public class RealTopic implements AbstractTopic {  
  19.   
  20.     /** 
  21.      * @see com.cathy.demo.pattern.proxy.AbstractTopic#request() 
  22.      */  
  23.     public void request() {  
  24.         System.out.println("真实主题接收到请求");  
  25.     }  
  26.   
  27. }  
  28.   
  29. /** 
  30.  * 
  31.  * @author zhangwei_david 
  32.  * @version $Id: ProxyToptic.java, v 0.1 2014年10月26日 上午7:55:01 zhangwei_david Exp $ 
  33.  */  
  34. public class ProxyToptic implements AbstractTopic {  
  35.   
  36.     private AbstractTopic realTopic;  
  37.   
  38.     /** 
  39.      * @see com.cathy.demo.pattern.proxy.AbstractTopic#request() 
  40.      */  
  41.     public void request() {  
  42.         preRequest();  
  43.         realTopic.request();  
  44.     }  
  45.   
  46.     /** 
  47.      * 
  48.      */  
  49.     private void preRequest() {  
  50.         System.out.println("代理角色,前置请求参数检查");  
  51.     }  
  52.   
  53.     public ProxyToptic(AbstractTopic realTopic) {  
  54.         super();  
  55.         this.realTopic = realTopic;  
  56.     }  
  57.   
  58. }  
  59.   
  60. /** 
  61.  * 
  62.  * @author zhangwei_david 
  63.  * @version $Id: Client.java, v 0.1 2014年10月26日 上午7:56:52 zhangwei_david Exp $ 
  64.  */  
  65. public class Client {  
  66.   
  67.     /** 
  68.      * 
  69.      * @param args 
  70.      */  
  71.     public static void main(String[] args) {  
  72.   
  73.         AbstractTopic topic = new ProxyToptic(new RealTopic());  
  74.         topic.request();  
  75.     }  
  76.   
  77. }  
  78. 本文由上海java培训机构推荐阅读,更多精彩请浏览上海it培训官网。
  评论这张
 
阅读(5)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017