探讨代理模式与Java反射机制的应用
代理模式,相信大多数人都非常熟悉,常见的实现方式是通过公共接口的方式,让我们的目标类和代理类实现同一接口,在代理类中调用目标类对象的方法。具体请看我另一个博客中的文章:
Java的代理模式(通过公共接口实现) 。通过接口的方式,有个不好的地方,就是对每个目标类都要写一对与之相对应的接口和代理类,如果业务类很多,就是非常繁锁的工作了。
而加入反射机制的代理模式,可实现一个公共的代理类,省去我们不少功夫。Java的java.lang.reflect包及其子包中提供了Class、Method、Annotation等有用的类。下面,写个方法代理的类MethodProxy,实现动态地调用对象的方法。
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
-
-
-
-
-
- public class MethodProxy {
-
- private Class clazz;
- private Object target;
- private Method method;
- private Object[] params;
-
- @SuppressWarnings("unchecked")
- public MethodProxy(Object target, String methodName, Object ... params) {
- rebindTarget(target, methodName, params);
- }
-
-
留言区(共0条)