代理模式-Proxy

代理模式:为其他对象提供一种代理以控制这个对象的访问。

  代理对象起到的作用,可以去掉功能服务或增加额外的服务。

常见代理模式:

  远程代理、虚拟代理、保护代理、智能引用代理

静态代理概念和实现方法方式:

  概念:代理和被代理对象在代理之前是确定的。他们都实现相同的接口或者相同的抽象类。

  实现方式:

    通过继承的方式(代理类继承被代理的类,并增加代理类的功能)。

    通过聚合的方式(推荐)(将被代理的类最为代理类的一个属性,来增加代理类的功能)。

java的动态代理:

  实现方式:

  demo:

    public class TimeHandle implements InvocationHandler {

      private Object target;

      public TimeHandle(Object target) {
        super();
        this.target = target;
      }

      /**
       * 参数: proxy:被代理的对象 method:被代理的方法 args:被代理方法的参数
       */
      @Override
      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("方法执行前...");
        method.invoke(target, args);
        System.out.println("方法执行后...");
        return null;
      }

    }

    public class Test {

      public static void main(String[] args) {

        // 测试jdk动态代理

        Car car = new Car();
        Moveable move = (Moveable) Proxy.newProxyInstance(Car.class.getClassLoader(), Car.class.getInterfaces(),
              (InvocationHandler) new TimeHandle(car));
        move.move();
      }

    }

  JDK与CGLIB实现动态代理的区别:

原文地址:https://www.cnblogs.com/LionheartCGJ/p/6847776.html