代理模式之動態代理

/**
 * 抽象角色
 * 定義爲接口或者抽象類,定義方法
 * @author BaiWen
 *
 */
public interface Subject {

	public void request();
	
}

/**
 * 抽象角色
 * 定義爲接口或者抽象類,定義方法
 * @author BaiWen
 *
 */
public interface Subject {

	public void request();
	
}

/**
 * 代理角色 需要實現InvocationHandler 定義Objec成員變量
 * 
 * @author BaiWen
 * 
 */
public class ProxySubject implements InvocationHandler {

	private Object obj;

	public ProxySubject(Object obj) {
		this.obj = obj;
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {

		return method.invoke(obj, args);
	}
}

/**
 * 測試客戶端
 * 
 * @author BaiWen
 * 
 */
public class Client {

	public static void main(String[] args) {

		RealSubject realSubject = new RealSubject();

		InvocationHandler handler = new ProxySubject(realSubject);

		Subject subject = (Subject) Proxy.newProxyInstance(RealSubject.class
				.getClassLoader(), realSubject.getClass().getInterfaces(), handler);

		subject.request();

	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章