JAVA通过在java.lang.reflect库中提供的Proxy,InvocationHandler和Method这三个类来支持代理模式,当系统有了一个代理对象后,对原有对象的方法调用,会首先被分派给一个调用处理器(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); }
}
分享到:
相关推荐
让PC开机主板蜂鸣器就唱猪八戒背媳妇! 打开系统目录复制程序,并加入注册表! 禁用任务管理! 清除软件源码也在! 本源码适合给新手研究, 高手绕道
中班优秀音乐教案《猪八戒娶媳妇》润新教育.txt
幼儿园中班音乐优秀教案《猪八戒娶媳妇》润新教育.txt
自己给公司同事写的一点入门小知识,希望对新同行有些帮助。上次性能测试培训后,不少同事反馈性能测试的一些基本概念还是难以理解,所以我在这里把那些看起来比较虚无缥缈的概念实例化生活化一下,一来仅供大家参考...
《大话移动通信》是一本全面介绍移动通信的通俗图书,涵盖了从通信基本理论到GSM、WCDMA、TD-SCDMA、cdma2000、LTE、LTE-Advanced等各种通信制式的相关知识。
猪八戒桌面工具 猪八戒桌面工具 猪八戒桌面工具 猪八戒桌面工具
android模仿猪八戒网
完整的猪八戒网源码,带完整后台。可以用于参考学习。
仿猪八戒威客网站源码php
仿2010猪八戒首页导航菜单 css div
猪八戒HTML模板,临时弄下来的,绝对OK..修改内容,直接可以商业化。
猪八戒网案例分析.pptx
仿猪八戒威客程序的源码,花钱买的源码。 zhubajie.com 猪八戒网可以上去看看的。
仿猪八戒威客系统网站源码 在线接任务源码 最新兼职任务网站源码,此源码已测试过,可正常运行。
猪八戒威客网 SWOT分析 威客网的盈利模式,猪八戒网的起源和发展
div css网页布局猪八戒首页导航菜单布局实例 div css网页布局猪八戒首页导航菜单布局实例 div css网页布局猪八戒首页导航菜单布局实例 div css网页布局猪八戒首页导航菜单布局实例
及时提示猪八戒官方网站的任务发布情况.默认为频率为一分钟一次.
2015年前,猪八戒网80%的项目都是PHP语言开发的,剩余少...腾云7号可谓意义深远,它使用Java语言将核心业务代码进行了重构,建立了以Dubbo为核心的SOA服务框架,使用ZooKeeper + Swoole为核心的业务调用提供机制。
仿猪八戒系统 花钱买的资源。下载把 仿猪八戒系统 花钱买的资源。下载把
猪八戒PC助手由猪八戒服务商九六重生独家提供开发设计服务。 是一款多功能的服务商操作助手,功能涵盖广泛全面,支持:好友、任务、关注、访客提醒、客户处理、服务批量上下架等全功能桌面办公软件,多年来我们致力于...