interface IVirtualProxy { void Request(); }
虚拟代理接口
using System; using System.Threading; class VirtualProxy : IVirtualProxy { private IVirtualProxy _TruthInstance; private bool flag = false; public VirtualProxy() { } #region IVirtualProxy 成员 public void Request() { if (_TruthInstance != null) _TruthInstance.Request(); else { Console.WriteLine("this is a virtual instance,you will see the truth instance after some minutes."); if (!flag) { flag = true; Thread thread = new Thread(delegate() { _TruthInstance = new TruthInstance("摄像头"); this.Request(); } ); thread.Start(); } } } #endregion }
虚拟代理实现
using System; using System.Threading; class TruthInstance : IVirtualProxy { private string _Name; public TruthInstance(string name) { Thread.Sleep(5000); _Name = name; } #region IVirtualProxy 成员 public void Request() { Console.WriteLine("you current request instance is " + _Name); } #endregion }
实际请求的对象
using System; using System.Collections.Generic; using System.Text; namespace ProxyPattern { class Program { static void Main(string[] args) { VirtualProxy vp = new VirtualProxy(); vp.Request(); vp.Request(); vp.Request(); vp.Request(); vp.Request(); Console.ReadKey(); } } }
调用者
本文介绍了一种软件设计模式——虚拟代理模式。通过该模式可以延迟实际对象的创建,节省资源并提高性能。文章展示了虚拟代理的接口定义及其实现方式,并提供了一个具体的例子:在需要时才实例化的摄像头对象。
651

被折叠的 条评论
为什么被折叠?



