zoukankan      html  css  js  c++  java
  • 大战设计模式【15】—— 代理模式

    代理模式(Proxy)

    设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

    一、定义

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

    二、结构

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

    Proxy(代理主题角色):代理主题角色内部包含了对真实主题的引用,从而可以在任何时候操作真实主题对象;

    RealSubject(真实主题角色):定义了代理角色所代表的真实对象,在真实主题角色中实现了真实的业务操作。

    三、优点

    协调了调用者和被调用者,一定程度上降低了系统的耦合度

    客户端针对抽象主题角色编程,增加和更换代理类无须修改源代码

    四、缺点

    在不必要的情况下使用代理会导致性能下降

    五、应用场景

    客户端需要访问远程主机中的对象时

    需要一个消耗资源较少的对象来代表一个消耗资源较多的对象

    需要控制对一个对象的访问,为不同用户提供不同级别的访问权限

    六、个人总结

    1、代理模式简单来说就是:

    对一个类建立一个代理,那么只要你要访问这个类,那么就必须先访问代理类,然后由代理类来帮你访问这个类。

    从现实中举例就像是一个明星的经纪人,你无法直接访问明星,必须先通过他的经济人。

    2、java中对代理模式的实现称为动态代理

    具体见例子中的代码

    3、代理模式主要适用于

    一个对象必须要被安全的访问

    需要控制一个对象的访问权限

    需要远程访问一个对象

  • 相关阅读:
    UNIGUI如何禁止关闭新窗口
    【转】华为编码规范
    awk中 使用shell的环境变量
    【转】SDL与MFC的混合
    MSSQL学习笔记
    转 在.NET环境下为网站增加IP过滤功能
    欢迎加入asp.net交流群
    配置SQL Server2005以允许远程访问
    实用的文件操作类
    VS2005 + VSS2005 实现团队开发、源代码管理、版本
  • 原文地址:https://www.cnblogs.com/linkstar/p/7774775.html
Copyright © 2011-2022 走看看