代理模式

Posted endian11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代理模式相关的知识,希望对你有一定的参考价值。

  • 定义:为其他对象提供一种代理以控制对这个对象的访问
    • 代理模式有如下角色:
      • Subject:抽象主题类,声明真是主题与代理共同的接口方法
      • RealSubject:真实主题类,代理类所代表的真实主题。客户端通过代理类间接地调用真实主题类的方法
      • Proxy:代理类,持有对真实主题类的引用,在其所实现的接口方法中调用真实主题类中相应的接口方法执行
      • client:客户端类
  • 静态代理
    • 抽象主题类
      public abstract class Subject {
          public abstract void request();
      }
      

        

    • 真实主题类
      public class RealSubject extends Subject{
          @Override
          public void request() {
              System.out.println("realSub");
          }
      }
      

        

    • 代理类
      public class Proxy extends Subject{
          Subject mRealSubject;
          @Override
          public void request(){
      
              if (mRealSubject != null){
                  System.out.println("Proxy request");
                  mRealSubject.request();
              }
          }
      
          public Proxy(Subject mRealSubject) {
              this.mRealSubject =  mRealSubject;
          }
      }
      

        

    • 客户端类
      public class Client {
          public static void main(String[] args){
              Subject realSubject = new RealSubject();
              Subject proxy = new Proxy(realSubject);
              proxy.request();
          }
      }
      

        

  • 动态代理
  • 优缺点:

以上是关于代理模式的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

用于从 cloudkit 检索单列的代码模式/片段

java代码实现设计模式之代理模式

代理模式(静态代理动态代理)代码实战(详细)

Java设计模式-代理模式之动态代理(附源代码分析)

代理模式(静态代理)