設(shè)計(jì)模式02: 策略模式

在簡單工廠模式中,我們提到簡單工廠模式中,客戶端需要知道兩個(gè)類OperationOperationFactory,其實(shí)可以運(yùn)用策略模式將其封裝起來:

class OperationContext
{
    private Operation oper = null;

    public OperationContext(double num1_, double num2_, string type)
    {
        switch (type)
        {
            case "+":
                oper = new OperationAdd();
                break;
            case "-":
                oper = new OperationSub();
                break;
            case "*":
                oper = new OperationMul();
                break;
            case "/":
                oper = new OperationDiv();
                break;
        }
        oper.Num1 = num1_;
        oper.Num2 = num2_;
    }

    public double GetResult()
    {
        return this.oper.GetResult();
    }
}

現(xiàn)在使用策略模式進(jìn)行改進(jìn),運(yùn)算時(shí)是這樣的:

OperationContext ct = new OperationContext(num1, num2, strOper);
Console.WriteLine(Convert.ToString(ct.GetResult()));

只需要知道OperationContext即可。相比而言,簡單工廠只是返回了Operation這樣的一個(gè)產(chǎn)品,而策略模型則將不同的運(yùn)算看成不同的策略,有相同的輸入輸出格式,只是中間的算法不同而已,將不同的部分交由子類去實(shí)現(xiàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計(jì)模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計(jì)原則時(shí)需要注意以下幾點(diǎn):a) 高內(nèi)聚、低耦合和單一職能的“沖突”實(shí)際上,這兩者...
    彥幀閱讀 3,892評(píng)論 0 14
  • 設(shè)計(jì)模式的目的是讓代碼易維護(hù)、易擴(kuò)展,不能為了模式而模式,因此一個(gè)簡單的工具腳本是不需要用到任何模式的。 策略模式...
    藍(lán)色信仰閱讀 2,449評(píng)論 1 3
  • 設(shè)計(jì)模式基本原則 開放-封閉原則(OCP),是說軟件實(shí)體(類、模塊、函數(shù)等等)應(yīng)該可以拓展,但是不可修改。開-閉原...
    西山薄涼閱讀 4,082評(píng)論 3 14
  • 參考資料:菜鳥教程之設(shè)計(jì)模式 設(shè)計(jì)模式概述 設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐,通常被有經(jīng)驗(yàn)...
    Steven1997閱讀 1,275評(píng)論 1 12
  • 食品包裝設(shè)計(jì)是品牌理念、產(chǎn)品特性、消費(fèi)心理的綜合反映,是建立產(chǎn)品與消費(fèi)者親和力的有力手段。食品包裝設(shè)計(jì)在保證所包裝...
    6fa2df96eb4d閱讀 281評(píng)論 0 0

友情鏈接更多精彩內(nèi)容