zoukankan      html  css  js  c++  java
  • 《面向模式的软件体系结构1模式系统》读书笔记(4) 访问控制

    访问控制

       1)代理(Proxy)模式使一个组件的客户机与一个组件代表通信,而不是组件本身。

       2)外观(Facade)模式为子系统中的一组接口提供了统一接口。

       3)迭代器(Iterator)模式提供了连续访问一个聚集对象的成员,而不暴露其基础表示的方法。

    代理模式结构

       原件(original)实现一个特别的服务。这种服务包括从诸如返回或显示数据的简单操作到复杂的数据检索功能或包含深一层组件的计算。

       客户机(client)对特定的任务负责。为完成客户机的工作,它以一种访问代理的间接方式调用原件的功能。

       代理(proxy)提供了和原件相同的接口,而且保证了对原件的正确访问。为完成这种功能,代理保持对它所表示的原件的引用。

       抽象原件(abstract original)提供了通过代理和原件实现的接口。

       

      

    实现

       1)为处理对一个组件的访问控制确定所有职责。将这些职责依附在一个单独的组件——代理上。

       2)如果可能,引入一个抽象基类来详细说明代理和原件两种接口的共同部分。从这种抽象基类导出代理和原件。如果代理和原件之间的相同接口是不可行的,那么可以使用一个适配器来保证接口的适应性。使代理接口适应原件接口会让客户机以为有相同的接口,用于适配器和原件的一个公共基类或许也是可能的。

       3)实现代理的功能。

       4)解除原件及其客户机所承担的现已迁移到代理中的职责。

       5)通过给代理一个指向原件的句柄将代理和原件关联起来。

       6)删除原件及其客户机之间所有的直接关联。

    变体

       1)远程代理。远程组件的客户机应该与网络地址和进程间通信协议相屏蔽。

       2)保护代理。必须防止越权访问组件。

       3)缓存代理。多重本地客户机可以共享远程组件传回的结果。

       4)同步代理。必须同步对一个组件的多重同时访问。

       5)计数代理。必须防止组件的偶然删除,或者收集使用情况的统计数字。

       6)虚拟代理。处理或装入一个组件的代价是昂贵的,但该组件的部分信息可能就已足够了。

       7)防火墙代理。本地客户机应该与外部世界相隔离。

    优点

       1)提高效率和降低成本。

       2)将服务器组件的位置与客户机相分离。

       3)将内务处理代码从功能中分离出来。

    不足

       1)间接方法导致低效率。

       2)过分采用复杂策略。

  • 相关阅读:
    .net C# 利用Session防重复点击防重复提交
    子报表修改后需要重新导入,0.00显示.00的调整方法
    svn错误 svnserve.conf:12: Option expected解决办法
    mysql远程访问 登录ERROR 1130: is not allowed to connect to this MySQL server解决办法
    phpmyadmin新加用户登陆不了,测试解决方案。
    自己封装的php Curl并发处理,欢迎提出问题优化。
    js和php计算图片自适应宽高算法实现
    jquery获取浏览器宽高
    swftools中的pdf2swf转换Error overflow ID 65535 解决办法
    php 根据ip获取城市以及网络运营商名称(利用qqwry.dat)
  • 原文地址:https://www.cnblogs.com/pennant/p/2635703.html
Copyright © 2011-2022 走看看