关于 Proxy 续集 -代码重构
2017-08-29 00:00
211 查看
上篇文章我们说了静态代理,那么有静态代理自然也就有动态代理咯,这次我们主要说 javaJDK给我提供的 一套动态代理。
老规矩先看代码,
接口类:
//实现类
//动态代理类
根据注释 很好理解 动态代理,总结下 java提供的动态代理
优点:
1.被代理类变动,代理不需要变动
2.更加灵活
缺点:
1.依赖接口,必须要有接口 才能代理 被代理对象
万一 需要代理的对象没有接口,那就玩玩拉
,所以下一篇 开始说CGLIB 这也是springAop实现动态代理的依赖,等着感受它的强大魅力吧
老规矩先看代码,
接口类:
public interface Hello { public void say(String name); }
//实现类
public class HelloImpl implements Hello{ @Override public void say(String name) { System.out.println(name); } public static void main(String[] args){ DynamicProxy dynamicProxy = new DynamicProxy(new HelloImpl()); Hello proxy = dynamicProxy.getProxy(); proxy.say("一战成佛"); } }
//动态代理类
public class DynamicProxy implements InvocationHandler{ private Object object; public DynamicProxy(Object object){ this.object = object; } @SuppressWarnings("unchecked") public <T> T getProxy(){ return (T)Proxy.newProxyInstance(object.getClass().getClassLoader(),object.getClass().getInterfaces(),this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { berofe(); Object invoke = method.invoke(object, args); after(); return invoke; } public void berofe(){ System.out.println("before"); } public void after(){ System.out.println("after"); } }
根据注释 很好理解 动态代理,总结下 java提供的动态代理
优点:
1.被代理类变动,代理不需要变动
2.更加灵活
缺点:
1.依赖接口,必须要有接口 才能代理 被代理对象
万一 需要代理的对象没有接口,那就玩玩拉
,所以下一篇 开始说CGLIB 这也是springAop实现动态代理的依赖,等着感受它的强大魅力吧
相关文章推荐
- 关于对代码重构的一点看法
- 关于代码重构的一些想法
- 关于前端代码重构注意的几个点
- 关于重构JS前端框架的失败经验(顺便怀念那些死去的代码)
- Martin Fowler关于代码重构的几句名言
- 关于代码重构的几点原则
- 关于代码重构的一点感想
- 关于代码重构:是微修还是全部推倒重来
- 关于SSH中代码中代码简单重构
- 【MS】关于代码重构完全解读
- 关于代码重构:是微修还是全部推倒重来
- 关于阅读《重构,改善既有代码的设计》的一些思考
- 关于代码重构
- 关于代码重构:是微修还是全部推倒重来
- android代码重构日记(四)——关于按钮部分的代码重构
- 关于重构,代码的坏味道,应该重构的代码
- 关于代码重构的开始
- 关于重构,代码的坏味道,应该重构的代码
- 关于代码重构
- 关于代码重构的一些思考