zoukankan      html  css  js  c++  java
  • 13 代理模式

    代理模式(Proxy):为另一个对象提供一个替身或占位符以控制对这个对象的访问。

    UML类图:

    搜狗截图20161219222026

    Subject为RealSubject和Proxy提供了统一的接口,Proxy就是RealSubject的代理。RealSubject是真正做事的对象,是被Proxy代理和控制访问的对象。Proxy持有RealSubject的引用,客户想与RealSubject交互的话,必须经过Proxy代理。

    上面就是代理模式的一般形式,但代理模式有许多变体。典型的有远程代理、虚拟代理和保护代理。

    1 远程代理控制访问远程对象

    如Web Service便是用远程代理的形式。

    2 虚拟代理控制访问创建开销大的资源

    开销大,可能是网络请求流量大、耗时长,也可能是IO读写满等等。比如,网页中的图片对象,由于图片请求比较耗时,但为了兼顾排版美观,就先用于图片大小一致的方框占位,等图片下载好后,填充到占位的地方,这便是一种虚拟代理。

    3 保护代理基于权限控制对资源的访问

    4 智能引用代理(Smart Reference Proxy),在调用真实对象时,代理处理另外一些事。如计算真实对象的引用次数,这样当该对象没有引用时,可以自动释放它。(看来GC就是这类啊)

    另外,还有许多种代理的变体,比如防火墙代理(Firewall Proxy),控制网络资源的访问,保护主体免于“坏客户”的侵害;缓存代理(Caching Proxy)为开销大的运算结果提供暂时存储,它也允许多个客户共享;同步代理(Synchronization Proxy)在多线程的情况下为主体提供安全的访问等等,好深奥,好好学。

    这节没有代码,后续深入学习web service。

  • 相关阅读:
    由WSDL文件生成WEB service server端C#程序(转)
    C#调用WebService实例和开发(转)
    ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
    TOMCAT的框架结构
    Oracle学习历程--创建用户,分配表空间
    sql关键字之null
    oracle中varchar、varchar2、char和nvarchar的区别
    将中缀转换为后缀并求值
    Orchard FAQ
    盘点支持Orchard的.NET 4.5虚拟主机(虚拟空间)
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/6201267.html
Copyright © 2011-2022 走看看