首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

class01-署理模式-动态代理模式

2012-10-30 
class01-代理模式-动态代理模式package comimport java.lang.reflect.InvocationHandlerimport java.lan

class01-代理模式-动态代理模式
package com;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class MyDynaProxy implements InvocationHandler{
private Object obj = null;
//构造函数传入业务体
public MyDynaProxy(Object obj){
this.obj = obj; 
}
public Object invoke(Object objProxy, Method method, Object[] args) throws Throwable {
//模拟公共代码实现部分
System.out.println("开始记录日志");
Object returnobj = null;
try{
//需要变换的业务部分
returnobj = method.invoke(obj, args);
}catch(Exception e){
e.printStackTrace();
}finally{
//模拟公共代码实现部分
System.out.println("结束记录日志");
}
return returnobj;
}
public static Object proxyFactory(Object facObj){
//装载真实主题类
Class cls = facObj.getClass();
//创建真实主题对象实例,第一个参数获取类装载器; 第二个参数被代理类的接口列表; 第三个参数为代理主题对象
return Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), new MyDynaProxy(facObj));
}
         //测试main方法
public static void main(String[] args){
Operator p = (Operator) proxyFactory(new Login());
p.execute();
}
}
------------------------------
package com;

public interface Operator {
public void execute();
}
-------------
package com;

public class Login implements Operator{
public void execute() {
System.out.println("登录业务逻辑操作");

}
}
---------------------------

热点排行