代理模式

Posted wheleetcode

tags:

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

概述

       代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通过引用代理对象来访问真实对象就是代理模式的设计动机。

       生活中的代理很多,如有快递公司通知你去取快递,你可以委托你的朋友去,而你的朋友就是你的代理,此外还有网络上的代理服务器

模式结构

 subject 抽象角色; 声明被代理对象和代理对象的共同接口

Proxy 代理角色:代理角色和真实角色实现相同的接口,代理角色内部包含有对真实对象的引用,所以她可以操作真实对象,同时也可以附加其他的操作,相当于对真实对象进行封装。

RealSubject: 真实角色。它代表着真实对象,是我们最终要引用的对象

 

interface Getkd{
    void getkd();
}

class You implements Getkd{

    String name;
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void getkd() {
        // TODO Auto-generated method stub
        System.out.println(getName() + " getkd");
    }
}

class Friend implements Getkd {

    Getkd you;
    public Friend(Getkd you) {
        this.you = you;
    }
    @Override
    public void getkd() {
        System.out.println("取快递前吃饭");
        you.getkd();
        System.out.println("取玩快递买西瓜");
    }
}
View Code

 

优点

      1、 代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。

      2、 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了的作用和保护了目标对象的

缺点

      1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。

      2、 实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

五、 模式适用场景

      1、 远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

      2、 虚拟代理:通过使用过一个小的对象代理一个大对象。这样就可以减少系统的开销。

      3、 保护代理:用来控制对真实对象的访问权限。

六、 模式总结

      1、代理模式是通过使用引用代理对象来访问真实对象,在这里代理对象充当用于连接客户端和真实对象的中介者。

      2、代理模式主要用于远程代理、虚拟代理和保护代理。其中保护代理可以进行访问权限控制。

 

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

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

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

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

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

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

代理模式(静态代理)