策略模式实例

策略模式就是将算法抽象出来变成一个策略,方便这个算法策略的改变。缺点就是客户端必须知道哪些情况使用哪些策略。

//策略接口
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());
    }
}

很普遍的策略模式,比起桥接模式,策略模式还少了对使用者的抽象,只抽象了被引用的使用功能部分。


首页 我的博客
粤ICP备17103704号