package com.java.design.proxy;
public interface Person {
void doSomething();
}
package com.java.design.proxy;
public class Tom implements Person{
@Override
public void doSomething() {
System.out.println("Tom doSomething.....");
}
}
package com.java.design.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class JDKDynamicProxy implements InvocationHandler {
private Person person;
public JDKDynamicProxy(Person person) {
this.person = person;
}
public Object getObject(){
return Proxy.newProxyInstance(person.getClass().getClassLoader(), person.getClass().getInterfaces(),this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("执行目标方法之前......");
Object invoke = method.invoke(person, args);
System.out.println("执行目标方法之后......");
return invoke;
}
}
package com.java.design.proxy;
public class ProxyTest {
public static void main(String[] args) {
System.out.println("原始类进行调用");
Person person = new Tom();
person.doSomething();
System.out.println("---------------------------------");
System.out.println("使用代理类方法进行调用");
Person proxyPerson = (Person) new JDKDynamicProxy(new Tom()).getObject();
proxyPerson.doSomething();
}
}
设计模式——代理模式
于 2023-02-12 23:06:18 首次发布