zoukankan      html  css  js  c++  java
  • 代理模式-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实现动态代理的区别:

  • 相关阅读:
    ruby2.2.2在msvc2010上编译
    msvc2010生成的指令序列有问题,可能跟pgo有关
    Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.
    正则总结
    实现点击按钮全选功能
    轮播图(省代码方法)
    js实现复制URL功能
    字符串的常用方法
    两种文件上传的实现-Ajax和form+iframe
    jquery中attr和prop的区别
  • 原文地址:https://www.cnblogs.com/LionheartCGJ/p/6847776.html
Copyright © 2011-2022 走看看