您的位置:首页 > 编程语言 > Java开发

JDK的动态代理-升级版

2015-06-01 16:30 363 查看
public interface Interceptor {
public void interceptor();
}


public class Logger implements Interceptor{
public void interceptor() {
System.out.println("logging");
}
}


public class Security implements Interceptor{
public void interceptor() {
System.out.println("security");
}
}


public class Privilege implements Interceptor{
public void interceptor() {
System.out.println("privilege");
}
}


public class SalaryInterceptor implements InvocationHandler{
private Object target;
private List<Interceptor> interceptors;

public SalaryInterceptor(Object target,List<Interceptor> interceptors) {
super();
this.target = target;
this.interceptors = interceptors;
}

public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
for (Interceptor interceptor : interceptors) {
interceptor.interceptor();
}
method.invoke(target, args);
return null;
}
}


public class SalaryManagerTest {
@Test
public void testSalaryManager(){
Object target = new SalaryManagerImpl();
Logger logger =  new Logger();
Security security = new Security();
Privilege privilege = new Privilege();
List<Interceptor> interceptors = new ArrayList<Interceptor>();
interceptors.add(logger);
interceptors.add(security);
interceptors.add(privilege);
/**
* 创建一个拦截器
*/
SalaryInterceptor interceptor =
new SalaryInterceptor(target, interceptors);
SalaryManager salaryManager = (SalaryManager)Proxy.newProxyInstance(target.getClass().getClassLoader(),
target.getClass().getInterfaces(), interceptor);
salaryManager.showSalary();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: