请问Proxy, InvocationHandle的问题

在一个贴子里看到的 "使用Proxy.newProxyInstance包装对象池,免去returnObject方法调用 "

我想问一下, 这个用Proxy, InvocationHandle来处理, 有什么好处么?

谢谢了@

可以干净了原来的代码,统一使用一个类就可以实现对象池。关键你需要了解对象池的使用。

谢谢Banq, 有这方面的资料可以提供一下么?

谢了!

to banq 兄: 下面是我写的代码, 我发现, 如果提供一个工厂方法 getSimple 这时, 就造成了和客户端紧密偶合, 有什么办法解决呢?
import java.lang.reflect.Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

interface Simple {
void sayHello();
}

class SimpleImpl implements Simple {
public void sayHello() {
System.out.println("Hello");
}
}

class AOPHandler implements InvocationHandler {
public static String SAYHELLO_METHOD_NAME = "sayHello";
Simple simple = new SimpleImpl();
public static Simple getSimple() {
return (Simple)Proxy.newProxyInstance(SimpleImpl.class.getClassLoader(),
SimpleImpl.class.getInterfaces(),new AOPHandler());
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable{
Object obj = null;
//if (SAYHELLO_METHOD_NAME.equals(method.getName())) {
System.out.println("before say hello method");
//} else {
obj = method.invoke(simple, args);
//}
return obj;
}
}

public class ProxyTest {
public static void main(String[] args) {
Simple simple = AOPHandler.getSimple();
simple.sayHello();
}
}

下面是我写的代码, 我发现, 如果提供一个工厂方法 getSimple 这时, 就造成了和客户端松散偶合, 有什么办法解决呢?

public class ProxyTest {
public static void main(String[] args) {
Simple simple = (Simple)Proxy.newProxyInstance(SimpleImpl.class.getClassLoader(),
SimpleImpl.class.getInterfaces(),new AOPHandler());
simple.sayHello();
}

如果用动态代理来实现缓冲池的话, 到是不会有耦合的总是, 但是, 如果是一个商业逻辑的话,比果, 我要记录一个逻辑方法的日志, 就会出现这样的问题