【Unity与23种设计模式】代理模式(Proxy)

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();

文章整理自书籍《设计模式与游戏完美开发》 菜升达 著

原文地址:https://www.cnblogs.com/fws94/p/7479719.html