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

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

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語句,很是不爽,不過任何需求的變更都是需要成本的。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美乱妇高清无乱码视频在线 | 91大神大战高跟丝袜美女 | 99er热| 国产一级毛片外aaaa | 99热久久这里只有精品6国产网 | porono日本动漫 | 日本动漫打扑克动画片樱花动漫 | 疯狂刺激的3p国产在线 | 亚洲大片免费看 | 国产在线视频色综合 | 91精品国产91久久 | 成年人视频在线 | 亚洲精品丝袜在线一区波多野结衣 | 欧美18一19性高清hd4k | 色综合色狠狠天天综合色 | bedfriend泰剧全集免费观看 | 精品久久久久久综合网 | 喜爱夜蒲2三级做爰 | 国产精品久久久久久久午夜片 | 深夜免费在线视频 | 青草免费在线观看 | 精品一区二区三区波多野结衣 | 出水小说| 国产在线观看人成激情视频 | 91麻豆精东果冻天美传媒老狼 | 乌克兰xxxxx| 日韩成人在线网站 | 亚洲七七久久综合桃花 | 免费观看视频网站 | 欧美一区二区福利视频 | 三级无删减高清在线影院 | 99在线视频免费 | 99久久精品国产综合一区 | 成人高清网站 | 动漫女性扒开尿口羞羞漫画 | 99久久免费看国产精品 | 国产99久久精品一区二区 | av在线色| 欧美日韩国产亚洲一区二区三区 | 99re思思 | jizz农村野外jizz农民 |