代理模式

Posted forthedream1991

tags:

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

1.基本概念

  • 给对象提供一个代理对象,通过代理对象调用实际对象
  • 作用:通过代理对象间接访问实际对象
  • 解决的问题:防止直接访问对象给系统带来不必要的复杂性(直接将实际对象接口完全暴露给客户端程序员
  • UML

  技术图片

2.代码

技术图片
package com.chengjie;

interface BuySubject {
    void buy();
}

class RealBuySubject implements BuySubject {
    @Override
    public void buy() {
        System.out.println("买一台MAC!");
    }
}

class RealBuySubjectProxy implements BuySubject {
    private BuySubject bs;

    public RealBuySubjectProxy(BuySubject bs) {
        this.bs = bs;
    }

    @Override
    public void buy() {
        bs.buy();
    }
}

public class TestProxyPattern {
    public static void main(String[] args) {
        new RealBuySubjectProxy(new RealBuySubject()).buy();
    }
}
View Code

3.优点

  • 添加了代理层,降低了系统耦合度
  • 代理层可以对目标对象进行屏蔽,使得对客户端程序员不可见,增加安全性

4.缺点

  • 增加了额外的处理流程,造成请求速度变慢
  • 额外实现了代理类,增加了复杂度

5.应用场景

  技术图片

6.参考

  https://www.jianshu.com/p/a8aa6851e09e

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

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

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

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

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

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

代理模式(静态代理)