做零食网站怎么样,网络推广公司营销方案,做中学数学教案有哪些好的网站,jquery代码做的网站代理模式介绍啥是代理模式#xff1f;代理模式 是一种结构型设计模式#xff0c;让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问#xff0c;并允许在将请求提交给对象前后进行一些处理。其实说通俗点#xff0c;就好比我们平时生活中的购买机票#xff… 代理模式介绍啥是代理模式代理模式 是一种结构型设计模式让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问并允许在将请求提交给对象前后进行一些处理。其实说通俗点就好比我们平时生活中的购买机票火车票我们以前的做法是去县上或市区的每一个代理点去购买你不需要关心代理点的工作人员去哪、购买车票你只需要给钱说购买的地方其余的一切都交由他负责。那么在这个购票的过程中代理点的购票员就相当于是一种代理模式。代理模式最常见的地方就是数据库操作部分对于数据库的操作很多时候我们都在使用代理的模式来进行比如我们常用的ORM其实说白了也是代理的一种特殊表现形式。代理模式结构服务接口 声明服务接口代理必须遵循该接口才能伪装成服务对象。服务 类提供一些实用的业务逻辑。代理 类包含一个指向服务对象的引用成员变量。代理完成其任务(例如延迟初始化、记录日志、访问控制和缓存等)后会将请求传递给服务对象。通常情况下代理会对其服务对象的整个生命周期进行管理。客户端 能通过同一接口或代理进行交互所以你可在一切需要服务对象的代码中使用代理。代理模式应用场景延迟初始化访问控制本地执行远程服务远程代理记录日志请求智能引用代理模式的实现方式如果没有现成的服务接口你就需要创建一个接口来实现代理和服务对象的可交换性。创建代理类其中必须包含一个存储指向服务的引用的成员变量(创建服务并对其整个生命周期进行管理客户端通过构造函数将服务传递给代理)。根据需求实现代理方法。在大部分情况下代理在完成一些任务后应将工作委派给服务对象。可以考虑新建一个构建方法来判断客户端可获取的是代理还是实际服务。可在代理类中创建一个静态方法也可以创建工厂方法可以考虑为服务对象提供延迟初始化操作Demo原始类提取的接口 public interface ISubject {void Request();}
原始类和代理类的实现 /// summary/// 代理的对象 /// 在代理类中提前声明并通过构造函数实例化/// /summarypublic class RealSubject : ISubject{public void Request(){Console.WriteLine(打印原始的RealSubject);}}/// summary/// 代理类 实现了ISbuject接口/// /summarypublic class Proxy : ISubject{private RealSubject _realSubject;public Proxy(RealSubject realSubject){this._realSubject realSubject;}public void Request(){if (CheakAccess()){_realSubject.Request();LogAcess();}}private bool CheakAccess() {Console.WriteLine(Proxy:类 检测验证);return true;}private void LogAcess(){Console.WriteLine(Proxy类主动输出LogAcess); }}
客户端和验证Main方法 /// summary/// 验证的客户端/// 可接收实现了ISubject接口的类/// /summarypublic class Client{public void ClientCode(ISubject subject){subject.Request();}}class Program{static void Main(string[] args){Client client new Client();Console.WriteLine(开始);RealSubject realSubject new RealSubject();client.ClientCode(realSubject);Console.WriteLine(-------------);Proxy proxy new Proxy(realSubject);client.ClientCode(proxy);Console.ReadKey();}}
打印的结果通过上面的数据库访问示意图和练习的Demo代码可以非常清楚的了解代理模式。在我们平时的业务开发过程中可以多多留意是否有这样的需求可以满足代理模式的要求那么就大概率可以使用代理模式来实现或重构。一个好的设计模式是恰当好处的出现在了业务刚好需要它的时候才是最美妙的。小寄语人生短暂我不想去追求自己看不见的我只想抓住我能看的见的。我是阿辉感谢您的阅读如果对你有帮助麻烦点赞、转发 谢谢。