一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 淺析.net策略模式

淺析.net策略模式

2019-12-13 09:44hebedich ASP.NET教程

這篇文章主要介紹了淺析.net策略模式,需要的朋友可以參考下

對于策略模式的理解:當一個業務有多種需求時候,在某個時候需要使用不同的方式來計算結果。這時候不同的方式可以理解為不同的策略來解決同樣的問題。 例如:商場收銀系統計算價格,1:正常計算 2:商品打折計算,3:滿300減100等方式。就可以按三種策略來處理需求。

簡單的說:策略模式就是用來封裝算法的,但在實踐中,我們發現可以用他來封裝幾乎任何類型的規則,只要在分析過程中聽到需要在不同的時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。

 

復制代碼代碼如下:

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 "正常計算價格";
        }
    }
    public class Discount : TacticsModel
    {
        public override string GetResult()
        {
            return "按打折計算價格";
        }
    }
    public class Preferential : TacticsModel
    {
        public override string GetResult()
        {
            return "滿300減100活動";
        }
    }
    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();
        }
    }
}

 

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

客戶端調用代碼:

 

復制代碼代碼如下:

   Console.WriteLine("請計算類型1正常,2打折,3優惠:");
   string type = Console.ReadLine();
   CashContext cc = new CashContext(type);
   Console.WriteLine(cc.GetResult());


結果:

 

淺析.net策略模式

淺析.net策略模式

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

只是成本的高低是有區別的。這個地方用反射技術會有更好的效果。后續會補充。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久亚洲伊人 | 狠狠综合视频精品播放 | 亚洲AV久久无码精品九九软件 | 欧美vpswindowssex| 成人伊人青草久久综合网破解版 | 性欧美高清强烈性视频 | 狠狠干2017 | 国产全部视频 | 日本免费的一级绿象 | 欧美人xxxxxbbbb | 草草在线视频 | 成人影院在线观看视频 | 日韩国产成人精品视频 | 成年性生交大片免费看 | 大象传媒短视频网站 | 日韩欧美一区二区三区免费看 | 国产精品美女福利视频免费专区 | v视界影院_vsjla | 91精品天美精东蜜桃传媒免费 | 免费一级生活片 | 爱爱小视频免费看 | 日日草视频| 国产在线激情视频 | 日韩在线视频免费观看 | 国产白虎| 秀婷程仪公欲息肉婷在线观看 | 日本高清视频网站www | 1024免费观看完整版在线播放 | 午夜免费啪视频观看视频 | 午夜十八岁禁 | 国产精品一久久香蕉产线看 | 精品国产区一区二区三区在线观看 | 男生和老师一起差差差 | 激情小说欧美图片 | 好男人资源免费播放在线观看 | 午色影院 | 亚洲国产精品久久网午夜小说 | 夫妇交换小说 | 色噜噜亚洲男人的天堂www | beeg最新 | 高肉h护士办公室play |