- 浏览: 101694 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
小小诺:
博主实例2中的代码博主难道没有测试吗?“工资总额不能超过6万元 ...
PLSQL -
emilyzhanghong:
我一般都用工具导入导出,语句记不住.
ORACLE 导入导出
使用动态代理不需要为特定对象与方法编写特定的代理对象,可以使得一个处理者服务于多个对象。首先,一个处理者的类设计要实现java.lang.reflect.InvocationHandler接口。
下面先给出一个简单的实现:
首先定义接口Ihello:
public interface IHello {
void sayHello(String msg);
}
再给出一个这个接口的简单实现类HelloSpker:
public class HelloSpker implements IHello {
public void sayHello(String msg) {
System.out.println("this is HelloSpker and Hello "+msg);
}
}
接下来就要定义一个普通的代理类:
public class CommonHandler implements InvocationHandler {
private Object delegate;
public Object bind(Object delegate){
this.delegate = delegate;
return Proxy.newProxyInstance(
delegate.getClass().getClassLoader(),
delegate.getClass().getInterfaces(), this);
}
public Object invoke(Object arg0, Method arg1, Object[] arg2)
throws Throwable {
Object result = null;
try {
System.out.println("do proxy's things");
result = arg1.invoke(delegate, arg2);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
最后给出测试类和测试结果:
public static void main(String[] args) {
CommonHandler handler = new CommonHandler();
IHello dynamicProxy = (IHello)handler.bind(new HelloSpker());
dynamicProxy.sayHello("dynamicproxy");
}
结果显示如下:
do proxy's things
this is HelloSpker and Hello dynamicproxy
总结:这里首要的概念是使用Proxy.newProxyInstance()静态方法建立一个代理对象,建立代理对象时必须要告知所要代理的接口,之后可以操作所建立的代理对象,在每次操作时会执行InvocationHandler的invoke()方法。
下面先以上述代码为例,理解一下Proxy.newProxyInstance()方法。
先讲解一下其参数:
ClassLoader loader:定义代理类的类加载器。在上面的这个例子中,IHello的实现类需要代理,所以此参数的值设置为:new HelloSpker();
Class<?>[] interfaces:代理类要实现的接口列表。
InvocationHandler h:指派方法调用的调用处理程序。
发表评论
-
db2 with函数使用
2012-08-15 10:59 961WITH T1 AS( SELECT CGBT.SEGM ... -
db2 数据 对象备份
2012-07-28 17:03 737CREATE OR REPLACE FUNCTION RSPD ... -
Java_sokect 网络通信
2012-05-10 23:52 872客户端程序 package tcp; import j ... -
jdk下载以及Windows 安装
2011-12-29 20:13 1259http://www.oracle.com/technetwo ... -
JAVA基本功<8>_面向对象
2011-12-15 00:22 643一.面向对象的特点: ... -
JAVA基本功<7>_JDBC
2011-12-15 00:19 1014一、jdbc基本概念 jdbc : Java Database ... -
JAVA基本功<6>
2011-12-15 00:16 697一. 1. 循环结构 1. while 语句格式: ... -
JAVA基本功<5>
2011-12-15 00:15 1730一.常量与变量 1.概念:变量就是内存中的一个存储区域,它有 ... -
JAVA基本功<4>
2011-12-15 00:09 7031:人机交互的方式: 一 ... -
J2SE基本功<3>
2011-09-27 15:35 656public class Test1 { public ... -
日期处理
2011-09-12 23:50 736http://changguangjuan.blog.163. ... -
泛型总结
2011-09-08 09:58 687package daan; /* 使用泛型类的限制和 ... -
J2SE基本功<2>
2011-09-07 09:06 579http://blog.csdn.net/java334452 ... -
J2SE基本功<1>
2011-08-16 22:55 587一、Java是一门高级语言,具有跨平台性(一次编译到处运行)1 ... -
IO文件读取
2011-08-01 08:51 648斯蒂芬 -
String数组的二分排序
2011-07-31 18:04 1430public class Bsearch { /* ... -
JAVA编程练手题
2011-07-04 23:48 27281:写一个方法(函数):判断一个单链表中是是否有环? 2:串行 ... -
策略模式
2011-06-09 00:11 684策略模式:高内聚 低耦合 可扩展(OCP) 在策略与最终用 ... -
正则表达式
2011-05-30 15:13 623import java.util.regex.Matcher; ... -
JSP 连接MySQL数据库
2011-05-29 20:23 688<%@ page contentType="t ...
相关推荐
代理模式(Proxy) 定义: 为其他对象提供一种代理以控制对这个对象的访问 结构: 由三部分组成 1.RealSubject(真实对象): 真正会调用到的对象 2.Proxy(代理对象): 代理真实对象的地方 3.Subject(共同点): 代理对象...
JAVA设计模式之代理模式实例
代理模式.ppt代理模式.ppt代理模式.ppt
本程序是一个代理模式的小例子。程序比较简单。
设计模式-代理模式(讲解及其实现代码)
深信服网闸代理模式配置教程
//代理模式内部引用了真实角色 public void requst() { this.preRequest(); //在真实角色操作之前所附加的操作 if(null == realsubject) { realsubject = new ReallSubject(); } realsubject.requst(); // ...
设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式设计模式--代理模式
代理模式代理模式代理模式
自己总结的代理模式和Java中的动态代理模式,有源码
代理模式: 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的主要作用是,用来控制真实对象的访问权限,也就是完全对外隐藏真实对象。以及在调用真实对象时,代理还可以额外的处理另外的事。 比如下面...
代理模式的小demo
自己写的一个代理模式的示例,供大家参考 自己写的一个代理模式的示例,供大家参考 自己写的一个代理模式的示例,供大家参考
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)Java设计模式之代理模式(结构)
该资源提供了三种代理模式的使用代码,其中包含每种模式的jar包、具体代码、Demo测试类,详细的注释帮助你来理解。
设计模式C++学习之代理模式(Proxy)
.net实现设计模式之代理模式