这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战

没有中间代理的时候我们看一下

UML类图:

image.png

代码演示:

image.png

说明:

  1. 上面事例中有一个重要的问题是明明现实中租客和房东是不认识的,可是看起来他们已经很熟悉了,实际中不排除但是不认识的情况居多,我们往往还是需要中介的介入来帮助我们搞定租房的一系列问题如:房源,房东。。。

    引入我们本篇的关键人物代理(中间商,XX平台)

    UML类:

    image.png

    代码演示:

    image.png
    image.png

    说明:

  2. 通过UML类图似乎看不出来什么变化,引入了代理类,也将租房抽象成类接口,但是我们可以通过最后的代码执行代码块看的出来,我们租赁房子全程由Beike中介来帮忙,我们坐等入住即可,是不是很方便呢。

    代理模式

    为其他对象提供一种新的访问这个对象的方式-代理

UML类图:

image.png

  1. Subject:将代理对象和真实实体的对象的功能进行抽象。
  2. Proxy: 保存实体对象并代理其功能。
  3. RealSubject:代理对象所帮助的真实实体。

    1. abstract class Subject {
    2. public abstract request(): void;
    3. }
    1. class RealSubject extends Subject {
    2. public request(): void {
    3. console.log("我是租客我要租房子。");
    4. }
    5. }
    1. class MyProxy extends Subject {
    2. realSub: RealSubject;
    3. public request(): void {
    4. if (!this.realSub) this.realSub = new RealSubject();
    5. this.realSub.request();
    6. }
    7. }
    1. new MyProxy().request();

    说明:

  4. 通过上面的代码和类图可以看到,我们只要找到能干活的中介我们就可以省很多事。能干事的中介绑定了我们的信息,最好还是个只在一家(私有)中介绑定信息最好。

    总结

  5. 其实我们经常会听到代理,因为在新项目初次调试接口经常会遇到跨域的问题,我们除了让后端去允许我们的跨域访问外就是通过不同手段来使用代理将我们真实的请求由代理服务来做。

  6. 代理的作用就是在我们不方便的时候可以代替我们去做一些事情,你觉得代理靠谱吗🤔️🤔️🤔️?