主頁 > 知識(shí)庫 > 淺析.net策略模式

淺析.net策略模式

熱門標(biāo)簽:河南語音外呼系統(tǒng)公司 威海電銷 寧夏機(jī)器人電銷 關(guān)于宗地圖標(biāo)注技術(shù)規(guī)范 t3出行地圖標(biāo)注怎么做 400電話辦理最優(yōu)質(zhì) 河北網(wǎng)絡(luò)回?fù)芡夂粝到y(tǒng) 外呼電銷機(jī)器人軟件 400免費(fèi)電話怎么辦理

對(duì)于策略模式的理解:當(dāng)一個(gè)業(yè)務(wù)有多種需求時(shí)候,在某個(gè)時(shí)候需要使用不同的方式來計(jì)算結(jié)果。這時(shí)候不同的方式可以理解為不同的策略來解決同樣的問題。 例如:商場(chǎng)收銀系統(tǒng)計(jì)算價(jià)格,1:正常計(jì)算 2:商品打折計(jì)算,3:滿300減100等方式。就可以按三種策略來處理需求。

簡(jiǎn)單的說:策略模式就是用來封裝算法的,但在實(shí)踐中,我們發(fā)現(xiàn)可以用他來封裝幾乎任何類型的規(guī)則,只要在分析過程中聽到需要在不同的時(shí)間應(yīng)用不同的業(yè)務(wù)規(guī)則,就可以考慮使用策略模式處理這種變化的可能性。

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignModel
{
    /// summary>
    /// 策略模式
    /// /summary>
    public class TacticsModel
    {
        public string type { get; set; }
        public virtual string GetResult()
        {
            return "";
        }
    }
    public class Normal:TacticsModel
    {
        public override string GetResult()
        {
            return "正常計(jì)算價(jià)格";
        }
    }
    public class Discount : TacticsModel
    {
        public override string GetResult()
        {
            return "按打折計(jì)算價(jià)格";
        }
    }
    public class Preferential : TacticsModel
    {
        public override string GetResult()
        {
            return "滿300減100活動(dòng)";
        }
    }
    public class CashContext
    {
        TacticsModel tm = null;
        public CashContext(string type)
        {
            switch (type)
            {
                case "1":
                    tm = new Normal();
                    break;
                case "2":
                    tm = new Discount();
                    break;
                case "3":
                    tm = new Preferential();
                    break;
                default:
                break;
             }
        }
        public string GetResult()
        {
            return tm.GetResult();
        }
    }
}

這種方式和簡(jiǎn)單工廠方式差不多,只是有稍微區(qū)別。 簡(jiǎn)單工廠模式需要暴漏給客戶端兩個(gè)類,策略模式和工廠模式的簡(jiǎn)單結(jié)合只暴漏了一個(gè)CashContext類

客戶端調(diào)用代碼:

復(fù)制代碼 代碼如下:

   Console.WriteLine("請(qǐng)計(jì)算類型1正常,2打折,3優(yōu)惠:");
   string type = Console.ReadLine();
   CashContext cc = new CashContext(type);
   Console.WriteLine(cc.GetResult());

結(jié)果:

其中還是使用了swich ,也就是就是說增加一種需求就有更改swith語句,很是不爽,不過任何需求的變更都是需要成本的。

只是成本的高低是有區(qū)別的。這個(gè)地方用反射技術(shù)會(huì)有更好的效果。后續(xù)會(huì)補(bǔ)充。

您可能感興趣的文章:
  • jquery獲得同源iframe內(nèi)body下標(biāo)簽的值的方法
  • 深入理解JavaScript系列(19):求值策略(Evaluation strategy)詳解
  • 深入理解JavaScript系列(33):設(shè)計(jì)模式之策略模式詳解
  • JavaScript設(shè)計(jì)模式之策略模式實(shí)例
  • js設(shè)置document.domain實(shí)現(xiàn)跨域的注意點(diǎn)分析
  • js兼容火狐獲取圖片寬和高的方法
  • js兼容火狐顯示上傳圖片預(yù)覽效果的方法
  • js同源策略詳解

標(biāo)簽:吉林 咸寧 廣元 樂山 淮北 固原 賀州 池州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析.net策略模式》,本文關(guān)鍵詞  淺析,.net,策略,模式,淺析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺析.net策略模式》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺析.net策略模式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章