当前位置:首页 > CN2资讯 > 正文内容

Proxy代理模式hosts代理模式

20小时前CN2资讯

>>返回《C#常用设计模式》

  • 1. 简介
  • 2. 示例
1. 简介
  • 定义

    • 代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。
  • 意图

    • 提供其他对象一个代理或占位符,来控制该对象的访问权限。
  • 动机

    • 由于一些对象创建和实例化需要占用大量系统资源,但我们并不能确定用户一定会调用该对象,所以通过延迟对象实例化来减缓系统资源的消耗。
    • 通过控制来延迟对象的创建和实例化,直到真正需要使用该对象才进行创建和实例化。
  • 经典实例

  • EF中在Proxy代理模式下的对象都是代理对象,起到延迟加载导航属性的作用(访问时加载)
  • Castle包中的动态代理
  • 常见的代理模式设计

    • 为某一个目标操作的结果提供临时的存储空间,以便多个程序调用可以共享这些结果,如:Abp中DbContext对象使用上的设计。
    • 控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。
    • 当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等
    • 虚拟代理的一种。把复制(克隆)拖延到只有在客户端需要时,才真正采取行动。(StringBuilder、EF中的Entity代理)
    • 根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。
    • 代理可以对加载的过程加以必要的优化,达到节省资源的最用
    • 为一个位于不同的地址空间的对象提供一个局域代表对象。
    • 好处是系统可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。
    • 远程代理
    • 虚拟代理
    • Copy-on-Write代理
    • 智能引用(Smart Reference)代理
    • 保护代理(Protect Proxy)
    • 缓冲代理(Cache Proxy)

    类图

    • 以智能引用代理为例
    2. 示例class Program {     static void Main()     {         //这里方式可以更智能,比如使用IOC实例化,并实现动态代理         Subject obj=new Proxy();         obj.Request();     } } public abstract class Subject {     public abstract void Request(); } public class RealSubject : Subject {     public override void Request()     {         //业务方法具体实现代码     } } public class Proxy : Subject {     private RealSubject realSubject = new RealSubject(); //维持一个对真实主题对象的引用       public void PreRequest()      {         //... ...     }       public override void Request()      {         PreRequest();         realSubject.Request(); //调用真实主题对象的方法          PostRequest();     }       public void PostRequest()      {         //... ...     } }
      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/24529.html

      分享给朋友:

      “Proxy代理模式hosts代理模式” 的相关文章

      SSD测速全指南:高效评估固态硬盘性能的必备工具与技巧

      SSD测速的整体概述 在日常使用中,SSD(固态硬盘)作为一种新兴存储设备,其重要性逐渐提升。与传统的机械硬盘相比,SSD提供更快的读写速度和更好的性能体验。然而,SSD的表现并不是一成不变的,针对其性能的评估便成为了一个不可或缺的环节。今后我将带大家深入了解SSD测速的基本情况,帮助大家更好地理解...

      宝塔安装全攻略:轻松管理你的服务器与网站

      宝塔面板,凭借其简单易用的特性,已经成为很多用户搭建和管理网站的首选工具。作为一款开源的服务器管理软件,宝塔面板提供了丰富的功能和灵活的操作方式,让无论是新手还是经验丰富的用户都能轻松上手。我在使用宝塔面板的过程中,深刻体会到它带来的便利和高效。 功能与特点 宝塔面板最大的一大优势在于其直观的用户界...

      宝塔面板PHP扩展新增指南:提升网站性能的实用技巧

      在日常网站管理和服务器配置中,宝塔面板的出现让这一切变得更为简单直观。作为一个流行的服务器控制面板,宝塔面板以其用户友好的界面和丰富的功能备受欢迎。对于没有技术背景的用户来说,它提供了极大的便利,而对于开发者来说,宝塔也能高效管理复杂的服务器配置。 宝塔面板不仅支持多种服务器环境,还能够轻松管理数据...

      Cloudflare 菲律宾节点:提升网络体验与速度的解决方案

      在当今数字化时代,每一个在线体验都至关重要。CloudFlare的出现,正是为了满足这一迫切的需求。作为全球知名的CDN(内容分发网络)服务提供商,CloudFlare不仅致力于加速网站的加载速度,也为用户提供安全防护服务。借助全球分布的节点,CloudFlare能够将用户请求快速而安全地送达目的地...

      泰国VPS市场分析:高效、可靠的云服务器选择

      泰国VPS市场概述 近年来,泰国的VPS市场迎来了快速的发展。作为东南亚的一个重要互联网和商业枢纽,泰国吸引了越来越多的国内外服务商。这一切的变化让我感受到了市场的活力,尤其是在曼谷,一个充满竞争和机会的城市。在这片土地上,VPS服务逐渐成为了企业和个人用户实现数字化转型的重要工具。 在研究泰国VP...

      如何使用一键同步脚本提高自媒体内容发布效率

      一键同步脚本是一种非常实用的自动化工具,现今在很多领域都可以看到它的身影。作为一名热爱分享与创作的人,我发现无论是自媒体内容发布、数据库备份迁移,还是文件同步,这类脚本都能大大简化我的工作流程。它们不仅能提高工作效率,还能减少出错的可能性,实现工作自动化。 一键同步脚本的核心在于其定义。简单来说,这...