• 《设计模式》-代理模式


      代理(Proxy)模式给某一个对象提供一个代理, 并由代理对象控制对原对象的引用。

      所谓代理,就是一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,可以在客户端和目标对象之间起到中介的作用。

      代理模式分为以下几种:

        远程代理(Remote):为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。

        虚拟代理(Virtual):根据需要创建一个资源消耗较大的对象,使得此对象只在需要时,才真正采取行动。

        保护代理(Protect or Access):控制对一个对象的访问,如果需要,可以给不同用户提供不同级别的使用权限。

        Cache代理:为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。

        防火墙代理(Firewall):保护目标,不让恶意用户接近。

        同步化代理(Synchronization):使几个用户能够同时使用一个对象而没有冲突。

        智能引用代理(Smart Reference):当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等。

      代理模式的结构:

        

      抽象角色(Subject):声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题。

      代理角色(Proxy):代理主题角色内部含有对真是主题的引用,从而可以在任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口,以便可以在任何时候都可以替代真实主体;控制真实主题的应用,负责在需要的时候创建真实主题对象(和删除真实主题对象);代理角色通常在将客户端调用传递给真实的主题之前或之后,都要执行某个操作,而不是单纯的将调用传递给真实主题对象。

      真实角色(RealSubject):定义了代理角色所代表的真实对象。

      

      总结:这个代理模式从结构上来看就是 有一个抽象类,然后有一些继承的子类。 而这个代理 也是一个继承这个抽象类的一个子类,只不过里面聚合了其他子类,从而实现了 调用该代理类就可以调用其他子类,也就相当于将这个子类交给另外一个子类进行调用,实现了一个代理的过程。  那么就可以在这个代理类里面添加各种业务逻辑判断。从而在不改变子类实现的基础上扩充业务。也提高了真实子类的安全性。

  • 相关阅读:
    centos 7安装gitlab及使用
    jenkins配置自动执行sql脚本
    zabbix监控mysql主从同步
    linux服务器通过mailx邮件发送附件到指定邮箱
    监控pos收银机
    elk安装与配置
    zabbix实时监控mysql业务数据
    Build Eclipse plug-in for Hadoop
    io 一不小心 关闭不住的偶
    hdu 1059二进制优化背包问题
  • 原文地址:https://www.cnblogs.com/zyj469470971/p/3196567.html
Copyright © 2020-2023  润新知