网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 新手入门 > 基础入门 > Java中的代理模式  

Java中的代理模式

2007-05-25  作者:bitsCN整理  来源:收集整理  点评 投稿 收藏

    前几天一个网友指出了我的文章中一些有失偏颇之处,那些文章都是我在阅读Java Core的时候做的总结,顺便加上我个人的一些理解。因为看的e文版,理解上有些地方可能还欠妥。下面谈一下对Java中代理模式(Proxy)的认识。 网管bitscn_com

    代理,想必大家都应该知道是什么冬冬了,一般的手机产商都有代理商,歌星们都有自己的经纪人,如此这些都可以看作是一种代理模式。下面我选择如下的一种情景来进行讲述:某董事长出差,但是此时公司有个聚会,董事长买单,但是由他的秘书去结帐。我们就权且把这个看作一个代理行为,^_^。 网管下载dl.bitscn.com

    首先我们定义一个接口:商人(Merchant),如下所示:

网管u家u.bitscn@com

package cn.edu.hust.cm.test; 网管u家u.bitscn@com

public interface Merchant {

网管u家u.bitsCN.com

    void treat();//商人都要请客吃饭滴,^_^ 网管论坛bbs_bitsCN_com

} 中国网管论坛bbs.bitsCN.com

    然后我们定义一个类:董事长(Director),如下所示:

网管网www.bitscn.com

package cn.edu.hust.cm.test;

中国网管论坛bbs.bitsCN.com

public class Director implements Merchant {

网管u家u.bitsCN.com

       public Director() { 网管bitscn_com

       }

网管下载dl.bitscn.com

       public void treat() { 网管网www.bitscn.com

              System.out.println("董事长请大家吃饭"); 网管网www_bitscn_com

       } 网管网www.bitscn.com

} 网管网www_bitscn_com

    OK,我们现在要给他找代理了,这个代理就是他的秘书(Secretary)。这里要涉及到一些代理的机制了。在Java中,用来做代理的类一般都要实现InvocationHandler,实现它的invoke方法,至于为啥是这样俺也不知道了,^_^。另外,当我们产生一个代理实例(proxy instance)的时候,只要我们通过这个实例调用任何方法,都会导致invoke方法的调用,还是看例子吧,如下所示: 网管u家u.bitscn@com

package cn.edu.hust.cm.test; 网管bitscn_com

  网管网www.bitscn.com

import java.lang.reflect.InvocationHandler; 网管网www.bitscn.com

import java.lang.reflect.Method; 中国网管论坛bbs.bitsCN.com

  网管网www_bitscn_com

public class Secretary implements InvocationHandler {

网管论坛bbs_bitsCN_com

       public Secretary(Director director) { 网管u家u.bitscn@com

              this.director=director; 网管联盟bitsCN@com

       } 网管下载dl.bitscn.com

       public Object invoke(Object arg0, Method arg1, Object[] arg2) 网管论坛bbs_bitsCN_com

                     throws Throwable { 网管联盟bitsCN@com

        director.treat(); 网管联盟bitsCN_com

              System.out.println("由秘书结帐咯!"); 网管下载dl.bitscn.com

              return null;

网管u家u.bitsCN.com

       } 网管论坛bbs_bitsCN_com

       private Director director;

网管u家u.bitscn@com

} 网管网www_bitscn_com

网管u家u.bitscn@com


TAGs
 上一篇:Java中的文件与磁盘操作技术详细解析   下一篇:JSP的基本语法与简单表单处理
Java中的代理模式 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: