设计模式 -- 代理模式 静态代理和动态代理
发布日期:2021-05-14 12:39:07 浏览次数:18 分类:精选文章

本文共 5613 字,大约阅读时间需要 18 分钟。

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

Proxy������������������������������������

  • ���������������Interface Abstraction���������������������������������������������������������������������������

  • ���������������Control Access���������������������������������������������������������������������������������������������������������

  • ���������Decouple layers���������������������������������������������������������������������������������������������

  • ������������������Filter or�� enhance���������������������������������������������������������������������������������������������������������������������

  • ���������Simplify������������������������������������������������������������������������������������������������������������

  • ���������������������������������������

    ������������������������������������������������������������������������������������������������������������������������������������������������������������������������

    • ���������������

      • ���������������������������������������������������������������������������
      • ������������������������������������������������������������������������������������������������������������������������������������
      • ������������������������������������������������������������������������������������������������������������������������������������������������
    • ���������������

      • ���������������������������������������������������������������������������������������������
      • ���������������������������������������������������������������������ASM���������������������������������
      • ������������Spring������������������AOP������������������������������������������������������������������������������������������������������

    ���������������������������

    ������������������������������������������������

  • JDK���������������

    • ������Java������������������������������������������������������������
    • ������������������������������JavaSE���������������
    • ���������������������������������������������������������������������������������������������������������������������������
    • ���������������������
    import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;interface MyInterface {    void doSomething();}class MyInvocationHandler implements InvocationHandler {    public Object invoke(Message m, Method method, Object[] args) throws Throwable {        System.out.println("������������������������...");        method.invoke(target, args);        System.out.println("������������������������...");        return null;    }}class MyService {    public void doSomething() {        System.out.println("������������������...");    }}MyService target = new MyService();Object proxy = Proxy.newProxyInstance(Proxy.class.getClassLoader(), MyInterface.class, new MyInvocationHandlerImpl());proxy.doSomething();
  • CGLIB���������������

    • ������ASM���Java���������������������������������������������������������������������������������������������������������������
    • ���������������������������������������������������������������
    • ���������������������������������������������������������������
    • ���������������������
    import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.Proxy;class CGLibDynamicProxy implements MethodInterceptor {    public Object intercept(Object o, Method method, MethodProxy methodProxy, Object[] args) throws Throwable {        System.out.println("���������������������������...");        methodProxy.invoke(target, args);        System.out.println("���������������������������...");        return null;    }}class TargetObject {    public void doSomething() {        System.out.println("������������������...");    }}TargetObject target = new TargetObject();TargetObject proxy = (TargetObject) Proxy.createuevo(CGLibDynamicProxy.class, target);proxy.doSomething();
  • Javassist���������������

    • ������JavaAssist������������������������Java���������������������������������������������������������������������
    • ���������������������������������������������������������
    • ������CGLIB���JDK���������������������������������������
  • ������������������������

    ���������������������������������������������������������������������������������������������

  • ������������������������������������������������������CGLIB���Javassist���������������������������������������JDK���������������

  • ���������������������������������������������������������������������������JDK������������������������������������������������������������������������������������������������������CGLIB���Javassist���

  • ������������������������������������������������������������������������������������������������������������������������������������������

  • ���������������������������������������������������������������������������������������������������������������������������������

  • ���������������������������������������������������������������������������������������Spring������������@Aspect������������������������������������������������

  • ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

    上一篇:设计模式 -- 建造者模式
    下一篇:idea每次创建项目JDK版本都是1.5的解决方法

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年04月21日 12时31分36秒