博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之七(代理模式)
阅读量:6674 次
发布时间:2019-06-25

本文共 1185 字,大约阅读时间需要 3 分钟。

前言

代理模式:为其他对象提供一种代理以控制对这个对象的访问。

结构图

 

Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。

RealSubject类,定义Proxy所代表的真实实体

Proxy类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以来替代实体。

实例代码

 Subject类

public abstract class Subject    {        public abstract void Request();    }

RealSubject类

public class RealSubject:Subject    {        public override void Request()        {            Console.WriteLine("真实的请求");        }    }

Proxy类

public class Proxy : Subject    {        RealSubject realSubject;        public override void Request()        {            if (realSubject == null)            {                realSubject = new RealSubject();            }            realSubject.Request();        }    }

客户端调用

class Program    {        static void Main(string[] args)        {            Proxy proxy = new Proxy();            proxy.Request();            Console.ReadLine();        }    }

运行效果

总结

 代理模式一般分为以下几种:

  第一种,远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

     .NET中的WebService就是远程代理模式的一个应用实例。

  第二种,虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长的时间的真实对象。

    浏览器当中就是通过代理模式来优化下载的。

  第三种,安全代理,用来控制真实对象访问时的权限。

    一般用于对象应该有不同的访问权限的时候。

  第四种,智能指引,是指当调用真实的对象时,代理处理另外一件事。

    

  

转载地址:http://gvrxo.baihongyu.com/

你可能感兴趣的文章
layabox基础:hello world
查看>>
ClassUtil
查看>>
Elastic-Job定时任务
查看>>
真实分享记录我学习Linux系统遇到的问题
查看>>
Linux下查找占用内存最多的进程
查看>>
mongodb 配置文件
查看>>
查看 docker 容器使用的资源
查看>>
Jedis的配置和优化
查看>>
layui + 阿里巴巴iconfont图标库导入
查看>>
2017总结一
查看>>
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
查看>>
Power Designer数据库建模工具,正向、逆向工程
查看>>
Libevent学习-02:搭建CentOS下的开发环境
查看>>
yum install 与 yum groupinstall 的区别
查看>>
Go基础系列:读取标准输入(一)
查看>>
PHP协程入门详解
查看>>
Java_Reflect_1
查看>>
HTML中的<table>标签及其子元素标签,JS中DOM对<table>的操作
查看>>
在linux中执行wget命令提示 -bash: wget: command not found 解决方法
查看>>
MobPush推送证书制作
查看>>