package com.maom.design.D_12_Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
* @Title: D_12_DynamicProxy
* @Description: 12_动态代理
* @Author maohb
* @Version 1.0
*/
public class D_12_DynamicProxy {
public static void main(String[] args) {
RealSubjectB realSubject = new RealSubjectB();
MyHandler myHandler = new MyHandler();
myHandler.setRealSubject(realSubject);
SubjectB proxySubject = (SubjectB) Proxy.newProxyInstance(RealSubjectB.class.getClassLoader(), realSubject.getClass().getInterfaces(), myHandler);
proxySubject.sailBook();
}
}
interface SubjectB {
public void sailBook();
}
class RealSubjectB implements SubjectB {
public void sailBook() {
System.out.println("卖书");
}
}
/** 动态代理 */
class MyHandler implements InvocationHandler {
private RealSubjectB realSubject;
public void setRealSubject(RealSubjectB realSubject) {
this.realSubject = realSubject;
}
public Object invoke(Object proxy, Method method, Object[] args){
Object result = null;
dazhe();
try {
result = method.invoke(realSubject, args);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
give();
return result;
}
public void dazhe() {
System.out.println("打折");
}
public void give() {
System.out.println("赠送代金券");
}
}
设计模式笔记_12_动态代理
最新推荐文章于 2024-10-10 22:44:55 发布