1. com.cleversoft.demos.dynamicproxy.Subject.java:
package com.cleversoft.demos.dynamicproxy;

public interface Subject {
public void request();
}
2. com.cleversoft.demos.dynamicproxy.RealSubject.java:
package com.cleversoft.demos.dynamicproxy;

public class RealSubject implements Subject {
public RealSubject() {
}

public void request() {
System.out.println("From real subject.");
}
}
3. com.cleversoft.demos.dynamicproxy.DynamicSubject.java:
動態(tài)代理類需要實現(xiàn)InvocationHandler接口,即需要實現(xiàn)invoke()方法。
package com.cleversoft.demos.dynamicproxy;

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

public class DynamicSubject implements InvocationHandler {

private Object _obj;

public DynamicSubject() {
}

public DynamicSubject(Object obj) {
this._obj = obj;
}

public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("before calling " + method);
method.invoke(_obj, args);
System.out.println("after calling " + method);
return null;

}

}
4. com.cleversoft.demos.dynamicproxy.Client.java:
package com.cleversoft.demos.dynamicproxy;

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

public class Client {
static public void main(String[] args) throws Throwable {
RealSubject rs = new RealSubject(); // 指定被代理類
InvocationHandler ih = new DynamicSubject(rs); // 初始化代理類
Class cls = rs.getClass();

Subject subject = (Subject) Proxy.newProxyInstance(
cls.getClassLoader(), cls.getInterfaces(), ih);
subject.request();
}
}
參考資料:
1. 《Java與模式》
2. http://dev.csdn.net/Develop/article/28/61250.shtm





2. com.cleversoft.demos.dynamicproxy.RealSubject.java:










3. com.cleversoft.demos.dynamicproxy.DynamicSubject.java:
動態(tài)代理類需要實現(xiàn)InvocationHandler接口,即需要實現(xiàn)invoke()方法。


























4. com.cleversoft.demos.dynamicproxy.Client.java:
















參考資料:
1. 《Java與模式》
2. http://dev.csdn.net/Develop/article/28/61250.shtm
|
|
歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人