动态代理
来源:互联网 发布:手机开票软件 编辑:程序博客网 时间:2024/04/28 17:07
Effective.Enterprise
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.logging.Logger;
public class LoggingProxy implements InvocationHandler {
private Logger logger;
private Object proxiedObject;
private LoggingProxy(Logger l, Object obj) {
// TODO Auto-generated constructor stub
logger = l;
proxiedObject = obj;
}
public static Object newLoggingProxyAround(Logger logger, Object obj) {
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
.getClass().getInterfaces(), new LoggingProxy(logger, obj));
}
public Object invoke(Object proxy, Method m, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
Object result;
try {
logger.info("Entering method " + m.getName());
result = m.invoke(proxiedObject, args);
} catch (Exception x) {
logger.warning("unexpected Exception " + x + " invoke "
+ m.getName());
throw x;
} finally {
logger.info("Exiting mothod " + m.getName());
}
return result;
}
}
//-----------
public interface Person {
public String getFirstName();
public void setFirstName(String value);
public String getLastName();
public void setLastName(String value);
public int getAge();
public void setAge(int value);
}
//--------------------
public class PersonImpl implements Person {
private String firstName;
private String lastName;
private int age;
public int getAge() {
// TODO Auto-generated method stub
return this.age;
}
public String getFirstName() {
// TODO Auto-generated method stub
return this.firstName;
}
public String getLastName() {
// TODO Auto-generated method stub
return this.lastName;
}
public void setAge(int value) {
// TODO Auto-generated method stub
this.age=value;
}
public void setFirstName(String value) {
// TODO Auto-generated method stub
this.firstName=value;
}
public void setLastName(String value) {
// TODO Auto-generated method stub
this.lastName=value;
}
}
//------------
import java.util.logging.Logger;
public class PersonManager {
public Logger personLogger= Logger.getLogger("Person", "a");
public boolean loggerEnabled=false;
/**
* @param args
*/
public Person getperson(String firstName, String lastName){
Person p=new PersonImpl();
if(loggerEnabled){
p=(Person)LoggingProxy.newLoggingProxyAround(personLogger, p);
}
p.setFirstName(firstName);
p.setLastName(lastName);
return p;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
PersonManager pm=new PersonManager();
pm.loggerEnabled=true;
System.out.println("-----------");
Person p=pm.getperson("firstName", "lastName");
// System.out.println(p.getFirstName()+"."+p.getLastName());
}
}
- 代理-->静态代理&动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 软件测试入门
- 打造永远删不掉的管理员账号
- #!的真正意义及其妙用(附带简单的自解压脚本header)
- 解决“此计算机上已安装了试用版。必须先卸载以前安装的试用版后才能安装另一个试用版。”
- 网页上内容导出到word里
- 动态代理
- 一道microsoft面试题
- 对MIKE合作还是利用的思想调整
- 利用DWR实现级联菜单
- 怎样开发控制面板程序(CPL程序)
- 如何删除windows服务
- Gentoo快速中文化不完全版
- VC中窗口ID,句柄,指针三者相互转换函数
- 怎样用VC开发小体积程序