摘錄自:設(shè)計(jì)模式與游戲完美開發(fā)
十年磨一劍焕毫,作者將設(shè)計(jì)模式理論巧妙地融入到實(shí)踐中,以一個(gè)游戲的完整實(shí)現(xiàn)呈現(xiàn)設(shè)計(jì)模式的應(yīng)用及經(jīng)驗(yàn)的傳承 《軒轅劍》之父——蔡明宏肥败、資深游戲制作人——李佳澤族跛、Product Evangelist at Unity Technologies——Kelvin Lo、信仁軟件設(shè)計(jì)創(chuàng)辦人—— 賴信仁举娩、資深3D游戲美術(shù)——?jiǎng)⒚鲪? 聯(lián)合推薦全書采用了整合式的項(xiàng)目教學(xué)析校,即以一個(gè)游戲的范例來(lái)應(yīng)用23種設(shè)計(jì)模式的實(shí)現(xiàn)貫穿全書,讓讀者學(xué)習(xí)到整個(gè)游戲開發(fā)的全過(guò)程和作者想要傳承的經(jīng)驗(yàn)铜涉,并以淺顯易懂的比喻來(lái)解析難以理解的設(shè)計(jì)模式智玻,讓想深入了解此領(lǐng)域的讀者更加容易上手。
工程GitHub
using UnityEngine;
using System.Collections;
namespace DesignPattern_Strategy
{
// 擁有Strategy物件的客戶端
public class Context
{
Strategy m_Strategy = null;
// 設(shè)定演算法
public void SetStrategy(Strategy theStrategy)
{
m_Strategy = theStrategy;
}
// 執(zhí)行目前的演算法
public void ContextInterface()
{
m_Strategy.AlgorithmInterface();
}
}
// 演算法的共用介面, Context透過(guò)此介面呼叫 ConcreteStrategy所實(shí)作的演算法
public abstract class Strategy
{
public abstract void AlgorithmInterface();
}
// 演算法A
public class ConcreteStrategyA : Strategy
{
public override void AlgorithmInterface()
{
Debug.Log("ConcreteStrategyA.AlgorithmInterface");
}
}
// 演算法B
public class ConcreteStrategyB : Strategy
{
public override void AlgorithmInterface()
{
Debug.Log("ConcreteStrategyB.AlgorithmInterface");
}
}
// 演算法C
public class ConcreteStrategyC : Strategy
{
public override void AlgorithmInterface()
{
Debug.Log("ConcreteStrategyC.AlgorithmInterface");
}
}
}
using UnityEngine;
using System.Collections;
using DesignPattern_Strategy;
public class StrategyTest : MonoBehaviour
{
// Use this for initialization
void Start()
{
UnitTest();
}
// Update is called once per frame
void UnitTest()
{
Context theContext = new Context();
// 設(shè)定演算法
theContext.SetStrategy(new ConcreteStrategyA());
theContext.ContextInterface();
theContext.SetStrategy(new ConcreteStrategyB());
theContext.ContextInterface();
theContext.SetStrategy(new ConcreteStrategyC());
theContext.ContextInterface();
}
}