攔截器在在流行的開源框架中很常見
理解攔截器的核心原理對理解這些開源框架的體系結構至關重要
下面以一個簡單的模型的來說明攔截器的實現的一般方法
模型分為以下模塊
業務組件
代理處理器
代理對象
攔截器
客戶端
以下是模型的實現
一
/**
* 業務組件接口
*/
public interface BusinessInterface {
public void doSomething();
}
/**
* 業務組件
*/
public class BusinessClass implements BusinessInterface{
public void doSomething() {
System
}
}
二
import java
import java
import java
/**
* 動態代理處理器工具
*/
public class DynamicProxyHandler implements InvocationHandler {
private Object business; //被代理對象
private InterceptorClass interceptor = new InterceptorClass(); //攔截器
/**
* 動態生成一個代理類對象
*
* @param business
* @return 代理類對象
*/
public Object bind(Object business) {
this
return Proxy
//被代理類 的ClassLoader
business
//要被代理 的接口
business
//代理處理 器對象
this);
}
/**
* 代理要調用的方法
*
* @param proxy 代理類對象
* @param method 被代理的接口方法
* @param args 被代理接口方法的參數
* @return 方法調用返回的結果
* @throws Throwable
*/
public Object invoke(Object proxy
Object result = null;
interceptor
result=method
interceptor
return null; //To change body of implemented methods use File | Settings | File Templates
}
}
三
/**
* 攔截器
*/
public class InterceptorClass {
public void before(){
System
}
public void after(){
System
}
}
四
/**
* 客戶端
*/
public class Client {
public static void main(String args[]) {
DynamicProxyHandler handler = new DynamicProxyHandler();
BusinessInterface business = new BusinessClass();
BusinessInterface businessProxy = (BusinessInterface) handler
businessProxy
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27143.html