• 七个结构模式之代理模式(Proxy Pattern)


    定义:
    给某一个对象提供一个代理或者占位符,并由代理类来控制对原对象的访问。代理对象在客户端和实际对象之间启到了中介作用,并且强调了代理类对原对象的控制作用。例如:安全代理、缓冲代理、远程代理等。

    结构图:

    • Subject:抽象主题类,定义了真实主题和代理类的共同接口,客户端根据该抽象接口进行编程,对代理类的内部实现不需要关心。
    • RealSubject:真实主题类,实现了真正的业务操作,但因为一些原因不能或不允许客户端直接访问。
    • Proxy:代理主题类,包含了对真实主题的引用,当调用真实主题的操作时,需要加上特定的预处理或者其它附加操作,以约束或限制真实主题的业务操作,达到控制和优化的作用。

    代理模式和装饰者模式的区别
    代理模式和装饰者模式的结构图十分相似,但两者的侧重点不一样。

    • 装饰者模式又被称作“Smart Proxy”,其主要功能是动态添加功能,不关心具体被添加功能者是谁。
    • 代理模式的主要功能是对被代理类进行控制和约束,不能动态地添加功能,这些功能一般都是限定好的。

    常见代理模式

    • 远程代理:使得客户端可以访问远程主机上的对象,远程主机上的对象可能有更良好的性能和处理速度,并且可以向客户隐藏网络细节,有代理对象来处理网络连接和通信工作。
    • 虚拟代理:对于一些加载时间比较长或者占用系统资源比较多的对象,可以创建虚拟对象来先行处理与客户端的交互,再有虚拟代理转发对应的请求给真实的对象。
    • 缓冲代理:对于一些操作频繁,而且每次操作消耗比较大的对象可以代用缓冲代理的方式,建立临时的缓冲空间,统一进行批量处理。

    优点:

    • 对实际访问的对象进行控制,并添加了额外功能,并向客户隐藏了实现细节。
    • 符合开闭原则,通过不用的代理器可以实现不同的功能,提高系统的可扩展性。
    • 不同的代理方式有着不同的优秀特性。

    实例:
    ProxyPattern.java

  • 相关阅读:
    Git常用命令
    Shell脚本学习
    Shell脚本学习
    Shell脚本学习
    Git ignore文件的用法
    RSA非对称加密算法
    C++ 标准库中的堆(heap)
    EM(Entity FrameWork)- code first , using in Visual stdio 2017
    C# 图片文字识别
    C# 调 C++ DLL 托管代码中释放非托管函数分配的内存
  • 原文地址:https://www.cnblogs.com/zhangfei614/p/6059955.html
Copyright © 2020-2023  润新知