2,策略模式(strategy)

1,定義

策略模式,它定義了算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶,

2,具體的代碼的實現(xiàn)以及UML圖

策略模式.png
//這是標記的符號  ````

using UnityEngine;
using System.Reflection;
using StrategyMode;

public class strategyMode : MonoBehaviour
{
    void Start()
    {
        Context context = new Context("B");
        context.GetResult();
    }
}

// factory and strategy and reflection        
namespace StrategyMode
{
    public abstract class Strategy
    {
        public abstract void AlgrithmInterface();
    }

    public class ConcreteStrategyA : Strategy
    {
        public override void AlgrithmInterface()
        {
            Debug.Log("ConcreteStrategyA");
        }
    }

    public class ConcreteStrategyB : Strategy
    {
        public override void AlgrithmInterface()
        {
            Debug.Log("ConcreteStrategyB");
        }
    }

    public class ConcreteStrategyC : Strategy
    {
        public override void AlgrithmInterface()
        {
            Debug.Log("ConcreteStrategyC");
        }
    }

    public class Context
    {
        private Strategy Strategy;

        //  strategy mode only

        //public Context(Strategy strategy)
        //{
        //    this.Strategy = strategy;
        //}


        //  strategy mode and factory mode

        //  use reflection need 

        public Context(string name)
        {
            Strategy = (Strategy)(Assembly.Load("Assembly-CSharp").
                                  CreateInstance("StrategyMode.ConcreteStrategy" + name));
        }

        public void GetResult()
        {
            Strategy.AlgrithmInterface();
        }
    }
}

3,關(guān)于策略模式的思考

策略模式是一種定義一系列算法的方法,從概念上看,所有的算法完成的都是相同的工作,只是實現(xiàn)不同,它可以以相同的方式調(diào)用所有的算法,減少了各種算法與使用算法類之間的耦合。
策略模式不僅可以用來封裝算法,也可以用來封裝任何類型的規(guī)則,適用于處理需要在不同的階段應(yīng)用不同的業(yè)務(wù)規(guī)則的情況。

4,關(guān)于策略模式和簡單工廠模式的區(qū)別的思考

簡單工廠模式更加強調(diào)的是對象的創(chuàng)建,利用創(chuàng)建的對象去執(zhí)行操作
策略模式更加強調(diào)的是通過不同的算法得到不同的結(jié)果,強調(diào)使用不同i的規(guī)則或者算法。通過context得到結(jié)果,而不是實際的對象。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 設(shè)計模式匯總 一、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 3,961評論 1 15
  • 設(shè)計模式基本原則 開放-封閉原則(OCP),是說軟件實體(類、模塊、函數(shù)等等)應(yīng)該可以拓展,但是不可修改。開-閉原...
    西山薄涼閱讀 3,852評論 3 14
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,819評論 25 708
  • 進入8月份,氣溫亦然很高,店里生意相對比較忙。 茜茜公主(程哲浩)的暑假班結(jié)束了,我不能讓她太閑了...
    茜茜的媽媽閱讀 413評論 0 0
  • 最后徐霖怎么走出門口,怎么回去的,又說了什么,他統(tǒng)統(tǒng)已經(jīng)不記得了。 唯一能感受到的就是那個軟軟的觸感。 至于這幾日...
    想要忘記閱讀 217評論 0 0