第一個接口:java
package com.struts2.interceptorDemo;
/**
* @author Administrator
*
*/
public interface Dog {
//兩個方法的聲明
public void info();
public void run();
}
ide
接口的實現類測試
package com.struts2.interceptorDemo;
/**
* @author Administrator
*
*/
public class DogImpl implements Dog{
public void info() {
System.out.println("INFO");
}
public void run() {
System.out.println("RUN");
}
}
this
攔截器的定義spa
package com.struts2.interceptorDemo;
public class DogInterceptor {
//第一個攔截器
public void method1(){
System.out.println("模擬方法1");
}
//第二個攔截器
public void method2(){
System.out.println("模擬方法1");
}
}
代理
代理工廠orm
package com.struts2.interceptorDemo;
import java.lang.reflect.Proxy;
public class MyProxyFactory {
public static Object getProxy(Object o){
ProxyHandle handle=new ProxyHandle();
handle.setTarget(o);
return Proxy.newProxyInstance(DogImpl.class.getClassLoader(), o.getClass().getInterfaces(), handle);
}
}
接口
handle類get
/**
*
*/
package com.struts2.interceptorDemo;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
* @author Administrator
*
*/
public class ProxyHandle implements InvocationHandler {
private Object target;
DogInterceptor dogInterceptor=new DogInterceptor();
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result=null;
if(method.getName().equals("INFO")){
dogInterceptor.method1();
result=method.invoke(target, args);
dogInterceptor.method2();
}else{
result=method.invoke(target, args);
}
return result;
}
public void setTarget(Object o) {
this.target = o;
}
}
it
測試類
/** * */package com.struts2.interceptorDemo;/** * @author Administrator * */public class TestDog {/*** @param args*/public static void main(String[] args) {//建立一個實例 Dog dogProxy=new DogImpl(); Dog dog=null; Object proxy=MyProxyFactory.getProxy(dogProxy); if(proxy instanceof Dog){ dog=(Dog)proxy; } dog.info(); dog.run();} }