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();
文章整理自书籍《设计模式与游戏完美开发》 菜升达 著