策略模式主要用於遊戲中的數值計算。爲不同角色的相同方法提供統一的接口。方便管理。
using UnityEngine;
public class Test : MonoBehaviour
{
private void Start()
{
StrategyContext strategyContext = new StrategyContext(new ConcreteStrategyA());
strategyContext.Do();
strategyContext.Strategy=new ConcreteStrategyB();
strategyContext.Do();
}
}
public class StrategyContext
{
private IStrategy _strategy;
public IStrategy Strategy
{
get { return _strategy; }
set { _strategy = value; }
}
public StrategyContext(IStrategy strategy)
{
_strategy = strategy;
}
public void Do()
{
_strategy.Calculate();
}
}
public interface IStrategy
{
void Calculate();
}
public class ConcreteStrategyA : IStrategy
{
public void Calculate()
{
Debug.Log("a計算");
}
}
public class ConcreteStrategyB : IStrategy
{
public void Calculate()
{
Debug.Log("b計算");
}
}
public class ConcreteStrategyC : IStrategy
{
public void Calculate()
{
Debug.Log("c計算");
}
}