前言:
最近一直在分析hadoop的RPC机制。在hadoop中,DataNode和NameNode之间的控制信息的交流是通过RPC机制完成的,采用的是动态代理和java NIO(参考博客:http://weixiaolu.iteye.com/blog/1479656) 的方式。DataNode端是通过获得NameNode的代理,通过该代理和NameNode进行通信的,为了更好的分析hadoop的RPC机制我想先分析一下动态代理是怎么实现。下面就是动态代理的最最简单的代码实现,我们一起来看看吧。
代码如下:
-
packagecn.xiaolu;
-
-
importjava.lang.reflect.InvocationHandler;
-
importjava.lang.reflect.Method;
-
importjava.lang.reflect.Proxy;
-
-
-
-
-
-
-
-
-
-
-
-
interfaceAbstractClass{
-
-
publicvoidshow();
-
-
}
-
-
-
classClassAimplementsAbstractClass{
-
-
@Override
-
publicvoidshow(){
-
-
System.out.println("我是A类!");
-
}
-
}
-
-
-
classClassBimplementsAbstractClass{
-
-
@Override
-
publicvoidshow(){
-
-
System.out.println("我是B类!");
-
}
-
}
-
-
classInvokerimplementsInvocationHandler{
-
AbstractClassac;
-
-
publicInvoker(AbstractClassac){
-
this.ac=ac;
-
}
-
-
@Override
-
publicObjectinvoke(Objectproxy,Methodmethod,Object[]arg)
-
throwsThrowable{
-
-
method.invoke(ac,arg);
-
-
returnnull;
-
}
-
}
-
-
-
-
-
-
classDynamicProxyTest{
-
-
publicstaticvoidmain(String[]args){
-
-
Invokerinvoker1=newInvoker(newClassA());
-
-
AbstractClassac1=(AbstractClass)Proxy.newProxyInstance(
-
AbstractClass.class.getClassLoader(),
-
newClass[]{AbstractClass.class},invoker1);
-
-
ac1.show();
-
-
-
-
Invokerinvoker2=newInvoker(newClassB());
-
-
AbstractClassac2=(AbstractClass)Proxy.newProxyInstance(
-
AbstractClass.class.getClassLoader(),
-
newClass[]{AbstractClass.class},invoker2);
-
-
ac2.show();
-
-
}
-
}
程序运行后的结果如下:
分享到:
相关推荐
自己总结的代理模式和Java中的动态代理模式,有源码
java中的装饰模式及动态代理模式示例源码,并且手写数据库连接池,以及展示动态代理模式在连接池中的使用
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
1:静态代理出现的实际背景,静态代理时如何演化成动态代理 2: 动态代理demo 举例实际应用场景(载入数据库驱动的时候,使用AIDL与系统Servic进行通信) 3: 动态代理使用到基础理论:ClassLoader 加载.class字节码...
Java中的代理模式Demo
Java中的代理模式--静态代理和动态代理 Java中的代理模式--静态代理和动态代理
对代理模式与Java动态代理类的理解说明
带视频讲解的代理模式之动态代理,有源代码和课件,很有帮助
JAVA设计模式之代理模式实例
- 代理模式 - 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事...
Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)
动态代理模式 适配器模式 实现,都可以运行,有一部分注解
Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)
详细而又简单的讲述了java动态代理设计模式
Java 设计模式 代理模式介绍,含源码
适用于初探java动态代理模式,精简易懂。
java代理模式和动态代理
java模式设计-代理模式之动态代理.ppt
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
主要讲述Java反射机制与设计模式之一:代理模式的原理与应用;同时详细讲述了Java对代理模式的支持以及Java中动态代理的原理,应用与实践。