GoF中定义:
“提供一个代理者位置给一个对象,好让代理者可以控制存取这个对象。”
代理模式多用来优化资源的加载
当资源已经加载过时,使用原来的资源
当资源没有加载过时,开始加载
此过程由代理模式控制
代理模式就像是一个过滤器
只有在一定条件下才可以执行一定的代码
这个条件可以在外部进行控制
//原来的功能类 public abstract class Subject { public abstract void Request(); } public class RealSubject : Subject { public RealSubject() { } public override void Request() { Debug.Log("RealSubject.Request"); } }
//代理 public class Proxy : Subject { RealSubject m_RealSubject = new RealSubject(); public bool ConnectRemote { get; set; } public Proxy() { } public override void Request() { if (ConnectRemote) m_RealSubject.Request(); else Debug.Log("Proxy.Request"); } }
//测试类 public class TestProxy { void UnitTest() { Proxy theProxy = new Proxy(); theProxy.Request(); theProxy.ConnectRemote = true; theProxy.Request(); } }
//测试结果 //Proxy.Request(); //RealSubject.Request();
文章整理自书籍《设计模式与游戏完美开发》 菜升达 著