zoukankan      html  css  js  c++  java
  • JAVA设计模式之代理模式

    1. 作用:
      为其他对象提供一种代理可以控制对这个对象的访问
      在某些情况下,一些客户不想或者不能直接饮用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
      tips1: 代理主题操作真是主题,只是主题执行具体的业务操作,而代理主题负责其他相关业务的处理
    2. 涉及到的角色:
      抽象角色: 声明真实对象代理对象的共同接口。
      代理角色: 代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时 代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象,同时,代理对象可以在执行真实对象操作时, 附加其他的操作,相当于对真实对象的封装。
      真实角色: 代理角色所代表的真实对象,是我们最终要引用的对象。
    3. 动态代理:
      InvocationHandler接口: 仅仅定义了一个方法: invoke(Object obj, Method method, Object[] args)
      在实际使用时,第一个参数obj一般指的是代理类,method是被代理的方法
      Proxy : 动态代理类。
      优点:
      被代理对象RealSubject可以在运行时动态改变,需要控制的接口Subject也可以在运行时改变,控制的方式DynamicProxySubject也可以动态改变。
    4. 创建步骤:
      创建 实现接口InvocationHandler的类,必须实现invoke方法。(有个Object的private成员变量,以及public的构造方法,Object作为参数进行初始化)
      创建 被代理的类及接口。
      通过Proxy的静态方法 newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) 创建一个代理。
      通过代理调用方法。

    Git proxy code
    Git dynamic proxy code

  • 相关阅读:
    win10安装scrapy
    win10安装 pandas
    scrapy 启动失败,scrapy startproject test 出错 'module' object has no attribute 'OP_NO_TLSv1_1
    Mac环境下安装运行splash
    通过软链接解决目录空间不足的问题
    CentOS 图形界面的关闭与开启
    shell+crontab 实时服务进程监控重启
    Linux下查看yun rpm dpkg 软件是否安装成功的方法
    ubuntu设置root登录ssh
    Ubuntu的中文乱码问题
  • 原文地址:https://www.cnblogs.com/nextStep/p/6688493.html
Copyright © 2011-2022 走看看