最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析.net策略模式

 更新時(shí)間:2014年12月17日 10:21:54   投稿:hebedich  
這篇文章主要介紹了淺析.net策略模式,需要的朋友可以參考下

對(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ǔ)充。

相關(guān)文章

  • asp.net querystring亂碼解決方法

    asp.net querystring亂碼解決方法

    GB2312的網(wǎng)站如果直接用javascript進(jìn)行ajax數(shù)據(jù)提交,會(huì)導(dǎo)致querystring亂碼,下面提供一下解決方法
    2014-02-02
  • ASP.NET Core 6.0 中使用Autofac的項(xiàng)目實(shí)踐

    ASP.NET Core 6.0 中使用Autofac的項(xiàng)目實(shí)踐

    本文主要介紹了ASP.NET Core 6.0 中使用Autofac的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • .Net Core靜態(tài)文件資源的使用

    .Net Core靜態(tài)文件資源的使用

    這篇文章介紹了.Net Core靜態(tài)文件資源的使用方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • ASP.NET?Core中的Caching組件簡(jiǎn)介

    ASP.NET?Core中的Caching組件簡(jiǎn)介

    這篇文章介紹了ASP.NET?Core中的Caching組件,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • ASP.NET C#生成下拉列表樹實(shí)現(xiàn)代碼

    ASP.NET C#生成下拉列表樹實(shí)現(xiàn)代碼

    下拉列表樹很方便且時(shí)尚的一個(gè)導(dǎo)航,貌似很多的朋友都想實(shí)現(xiàn)這樣一個(gè)列表樹,本文將滿足你們的設(shè)想,通過本文你們可以學(xué)到如何使用c#生成下拉列表樹,感興趣的你可不要錯(cuò)過了啊
    2013-02-02
  • asp.net生成縮略圖實(shí)現(xiàn)代碼

    asp.net生成縮略圖實(shí)現(xiàn)代碼

    此文件imgSmall.ashx專門用來生成圖片的縮略圖,可以減少服務(wù)器壓力,降低網(wǎng)絡(luò)流量,初學(xué)者必備
    2011-11-11
  • ASP.NET MVC學(xué)習(xí)之NuGet在VS中的運(yùn)用淺談

    ASP.NET MVC學(xué)習(xí)之NuGet在VS中的運(yùn)用淺談

    這篇文章主要給大家介紹了關(guān)于ASP.NET MVC學(xué)習(xí)之NuGet在VS中運(yùn)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • 詳解開源免費(fèi)且穩(wěn)定實(shí)用的.NET PDF打印組件itextSharp(.NET組件介紹之八)

    詳解開源免費(fèi)且穩(wěn)定實(shí)用的.NET PDF打印組件itextSharp(.NET組件介紹之八)

    本篇文章主要介紹了.NET PDF打印組件itextSharp。.NET中實(shí)現(xiàn)PDF打印的組件比較多,例如PDFsharp、Report.NET、sharpPDF、itextSharp等等,今天主要簡(jiǎn)單的介紹itextSharp組件。有興趣的可以了解一下。
    2016-12-12
  • asp.net+ajax+sqlserver自動(dòng)補(bǔ)全功能實(shí)現(xiàn)解析

    asp.net+ajax+sqlserver自動(dòng)補(bǔ)全功能實(shí)現(xiàn)解析

    這篇文章主要介紹了asp.net + ajax + sqlserver 自動(dòng)補(bǔ)全功能,需要的朋友可以參考下
    2014-03-03
  • ASP.NET Core 中的模型綁定操作詳解

    ASP.NET Core 中的模型綁定操作詳解

    在本篇文章里小編給大家整理的是關(guān)于ASP.NET Core 中的模型綁定操作的相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08

最新評(píng)論

永德县| 大同县| 双江| 宁安市| 含山县| 固镇县| 延寿县| 东阳市| 桐庐县| 城市| 曲沃县| 唐河县| 扶风县| 滨州市| 太仆寺旗| 台南县| 威信县| 抚松县| 泾源县| 苍南县| 郁南县| 海盐县| 涟水县| 新沂市| 梓潼县| 库车县| 黎川县| 长丰县| 合肥市| 鄂尔多斯市| 田东县| 永善县| 福海县| 乐都县| 岢岚县| 上思县| 安化县| 永春县| 安顺市| 岳阳县| 台前县|