`
suhuanxi
  • 浏览: 42420 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

猪八戒娶媳妇之动态代理机制

阅读更多

JAVA通过在java.lang.reflect库中提供的Proxy,InvocationHandlerMethod这三个类来支持代理模式,当系统有了一个代理对象后,对原有对象的方法调用,会首先被分派给一个调用处理器(InvocationHandler).程序可以在调用处理器的invoke()方法中截获这个调用,进行额外的操作.下面是我写的一个小例子.

package daili;

 

//高小姐的抽象接口,JAVA的动态代理机制要求被代理的类都应该有一个接口

public interface MissGaoInterface {

int age=18;

String address="高老庄";

public void whoIsMe();

}

//高小姐的真实本人,在本例即是被代理类

public class MissGao implements MissGaoInterface {

   public void whoIsMe() {

   System.out.println("我是高老庄的高小姐,今年"+age+"");

   }

 

}

//下面是代理类,齐天大圣变做高小姐的模样代替高小姐等待猪八戒的到来

public class QiTianDaSheng implements InvocationHandler {

private Object delegate;

private String who;

public Object bind(Object delegate){//指定一个要代理的类,这里是高小姐

   this.delegate=delegate;

   Class cls=delegate.getClass();

   return Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), this);//生成代理对象,这个代理对象是实现了高小姐的接口的

}

   public Object invoke(Object proxy, Method method, Object[] args)

          throws Throwable {

      if(who.equals("ZhuBaJie")){//如果来访的是猪八戒

      System.out.println("我是齐天大圣!");

      return null;

      }

      else  //如果来访的是其它人

          return method.invoke(delegate, args);    

   }

   public String getWho() {

      return who;

   }

   public void setWho(String who) {

      this.who = who;

   }

 

}

//生成高小姐的工厂,实际上是经过代理的对象

public class Factory {

public static MissGaoInterface getInstense(String who){

   QiTianDaSheng q=new QiTianDaSheng();

   q.setWho(who);

   MissGaoInterface o=(MissGaoInterface)q.bind(new MissGao());

   return o;

}

}

//猪八戒的类,也就是要访问高小姐的客户端

public class ZhuBaJie {

public void kiss(MissGaoInterface miss){

   miss.whoIsMe();

}

}

//测试

public class Test {

   public static void main(String args[]){  

      ZhuBaJie z=new ZhuBaJie();

//获取高小姐的对象时,传入参数,告诉高小姐我是谁

      MissGaoInterface m=Factory.getInstense("ZhuBaJie");

//猪八戒访问高小姐,输出是我是齐天大圣”,猪八戒并不知道高小姐经过代理,猪八戒上当了,哈哈!如果是其它人访问,就会允许见到真正的高小姐.

      z.kiss(m);   }

}

分享到:
评论

相关推荐

    猪八戒背媳妇++++清除软件.rar

    标题中的“猪八戒背媳妇++++清除软件.rar”暗示了一个有趣的电脑恶搞程序,它能够使用户的PC在开机时播放“猪八戒背媳妇”的音乐,这是通过改变主板的蜂鸣器声音实现的。这个程序可能是一种基于Windows系统的应用...

    stm32f103 控制无源蜂鸣器播放音乐《猪八戒背媳妇》

    一个keil工程,通过stm32f103 控制一个无源蜂鸣器播放音乐《猪八戒背媳妇》片段。该工程展示了如何将一个简谱转换为stm32程序数据,并进行音乐播放。

    中班优秀音乐教案《猪八戒娶媳妇》润新教育.txt

    中班优秀音乐教案《猪八戒娶媳妇》润新教育.txt

    幼儿园中班音乐优秀教案《猪八戒娶媳妇》润新教育.txt

    幼儿园中班音乐优秀教案《猪八戒娶媳妇》润新教育.txt

    性能测试就是猪八戒背媳妇

    自己给公司同事写的一点入门小知识,希望对新同行有些帮助。上次性能测试培训后,不少同事反馈性能测试的一些基本概念还是难以理解,所以我在这里把那些看起来比较虚无缥缈的概念实例化生活化一下,一来仅供大家参考...

    仿猪八戒威客网站源码php

    源码通常包括了后台管理系统、用户界面、任务发布、竞标机制、支付系统、评价体系、消息通知等多个关键模块,使得开发者能够快速搭建起一个功能齐全的威客平台。 【标签】"php"表明此项目使用的是PHP语言,这是一种...

    小学语文常用歇后语分类大全有关猪八戒的歇后语

    3. 猪八戒背媳妇——乐在其中:这个歇后语描绘了猪八戒背着媳妇时的快乐情景,常用来形容人沉浸在某种乐趣中,享受过程。 4. 猪八戒打摆子——肥水不落外人田:歇后语中的“打摆子”指的是颤抖,而“肥水不落外人田...

    PHP+MYSQL 仿猪八戒威客程序源码

    猪八戒网是中国知名的威客网站,它连接了雇主和自由职业者,让人们可以发布任务、竞标项目并完成工作,从而获取报酬。此源码旨在复制该平台的核心功能和用户体验。 1. **PHP技术**:PHP是一种广泛使用的开源脚本...

    关于猪八戒的歇后语大全.doc

    32. 猪八戒背媳妇——费力不讨好:付出很多努力却得不到回报。 33. 猪八戒绣花——硬装巧手:不适合自己的事情还非要去做。 34. 猪八戒照镜子——里外不是人:形容处境尴尬,无论怎样做都会受到责备。 35. 猪八戒...

    猪八戒桌面工具 美化工具

    "猪八戒桌面工具"是一款专门用于美化用户电脑桌面的应用程序,它集合了一系列实用功能,旨在提升桌面的个性化和操作便利性。这款工具以其独特的猪八戒形象为品牌标识,深受用户喜爱。下面将详细讲解该工具的核心特点...

    php威客系统(仿猪八戒版)

    【PHP威客系统(仿猪八戒版)】是一款基于PHP编程语言开发的在线服务平台,其设计灵感来源于知名的猪八戒网,旨在提供一个类似的功能齐全、用户体验良好的威客任务发布与接单平台。该系统集成了众多核心功能,如用户...

    猪八戒首页HTML模板

    这些都可能在“猪八戒首页HTML模板”中得以应用,以实现现代网页的美观和动态效果。 此外,模板可能还包含了JavaScript文件,用于实现交互功能和动态效果。jQuery是一个常用的JavaScript库,简化了DOM操作、事件...

    福星高照猪八戒任务助手

    1. 实时监控:软件会持续监测猪八戒官方网站,一旦有新的任务发布,便会通过通知或消息的形式提醒用户,让用户在繁忙的工作中也能保持对任务动态的敏感度。 2. 自定义提醒频率:虽然默认设置是一分钟一次,但用户...

    猪八戒网案例分析.pptx

    【猪八戒网案例分析】 猪八戒网是中国领先的在线服务市场,自2005年成立以来,它一直致力于提供非标准化的服务交易,而非传统的商品销售。作为一个专业的技能分享经济平台,猪八戒网汇集了千万专业人才和机构,满足...

    仿猪八戒系统

    【标签】"猪八戒"进一步强调了该系统与知名众包平台猪八戒网的关系,可能意味着它在功能、用户体验或商业模式上受到了猪八戒网的启发,旨在复制其成功之处。 从【压缩包子文件的文件名称列表】"5455"来看,由于信息...

    猪八戒网经营模式剖析.doc

    猪八戒网的成功之处在于,网站提供了一个具有某方面知识、技术的人才与需要相关服务的公司、团体、个人的对接平台,强调知识和人才在电商领域的重要性。同时,猪八戒网也填补了国内在线服务交易市场的空缺,使得中国...

    猪八戒网源码

    猪八戒网是一个知名的在线服务平台,主要以威客模式运营,连接需求方和提供服务的工作者,涵盖了设计、开发、文案、营销等多个领域。源码是构建网站的基础,它包含了网站运行所需的所有代码,包括前端界面、后端逻辑...

    java模式设计--代理模式

    在Java中,动态代理的实现通常涉及到反射机制。通过`Proxy.newProxyInstance()`方法,我们可以根据给定的接口列表和一个`InvocationHandler`实例,生成一个实现了这些接口的代理对象。`InvocationHandler`的`invoke...

    猪八戒网的十一年取经之路(创业者选读)

    猪八戒网作为全国最大的服务众包平台,其发展历程对创业者而言是一次难得的取经之路。在这个过程中,猪八戒网不仅实现了自身的转型与升级,还为整个行业的创新和发展提供了借鉴。 首先,猪八戒网的成立可以追溯至...

Global site tag (gtag.js) - Google Analytics