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实现动态代理的区别:

  • 相关阅读:
    root用户javac可以执行sudo后command not found问题
    机器学习 KNN算法实现 (鸢尾花)
    机器学习 KNN分类算法简单介绍+数据集拆分
    机器学习的一般流程
    机器学习算法的性能评价
    Opencv 自带函数(Haar)的人脸检测
    Opencv 的基础认识
    labelme 的学习
    天梯赛总结CCCC
    VScode配置c,c++编译环境
  • 原文地址:https://www.cnblogs.com/LionheartCGJ/p/6847776.html
Copyright © 2011-2022 走看看