策略模式就是将算法抽象出来变成一个策略,方便这个算法策略的改变。缺点就是客户端必须知道哪些情况使用哪些策略。
//策略接口
public interface IStrategy {
int GetDamage();
}//策略实现1
public class NormalStrategy : IStrategy
{
public int GetDamage()
{
return 10;
}
}//策略实现2
public class DoubleStrategy : IStrategy {
public int GetDamage()
{
return 2 * 10;
}
}//Context客户端
using UnityEngine;
public class Context : MonoBehaviour {
private IStrategy strategy = new NormalStrategy();
void Update()
{
//根据情况来使用某种策略
if (Input.GetMouseButtonDown(0))
{
if (strategy.GetType() == typeof(NormalStrategy))
{
strategy = new DoubleStrategy();
}
else {
strategy = new NormalStrategy();
}
}
Debug.Log(strategy.GetDamage());
}
}很普遍的策略模式,比起桥接模式,策略模式还少了对使用者的抽象,只抽象了被引用的使用功能部分。