多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > 機房合作――職責鏈+策略模式

機房合作――職責鏈+策略模式

來源:程序員人生   發(fā)布時間:2015-06-12 08:21:43 閱讀次數(shù):3560次

這兩個模式在進行個人重構的時候也使用了,當時是懵懵懂懂的,現(xiàn)在合作中又使用了1遍,思路清晰了很多,感覺這些設計模式之間有千絲萬縷的聯(lián)系,工夫還不到家還得漸漸的理1理,記得有個師哥說過“到最后會發(fā)現(xiàn)設計模式其實就1個”,所以努力吧!先看看這兩個模式的利用。
職責鏈:肯定消費時間
策略:計算不同類型卡的消費金額
職責鏈模式的好處比較直接的就是可以免使用復雜的if語句,解耦了要求者和處理者,而且可以靈活的增加處理者,不會背背開放封閉原則。職責鏈模式的使用,是通過其中的OnLineCount來進行的,然后由調(diào)用其中的countTime()方法便可。

public class OnlineTimeCountBLL { /// <summary> /// 計算消費時間 /// </summary> /// <param name="enLine"></param> /// <param name="enBasicData"></param> public int CostTime(LineModel enLine, BasicDataModel enBasicData){ //在實體里用的是decimal類型,但是在類里用的是int類型進行計算所以使用(int) PrepareTimeHandlerBLL prepareTime = new PrepareTimeHandlerBLL((int)(enBasicData.prepareTime)); //實例化準備時間的類,同時用基本數(shù)據(jù)里的準備時間對其進行初始化 UnitTimeHandlerBLL unitTime = new UnitTimeHandlerBLL((int)(enBasicData.unitTime)); //實例化單位時間的類,同時用基本數(shù)據(jù)里的單位時間對其進行初始化 LeastTimeHandlerBLL leasetTime = new LeastTimeHandlerBLL((int)(enBasicData.limTime)); //實例化最少上機時間的類,同時用基本數(shù)據(jù)里的最少上機時間對其進行初始化 //設置準備時間的后繼者,如果準備時間處理不了,則用最少上機時間進行處理 prepareTime.SetCalculate(leasetTime); //設置最少時間的后繼者,如果最少時間處理不了,則用單位上機時間進行處理 leasetTime.SetCalculate(unitTime); //調(diào)用準備時間的的方法開始進行處理 return prepareTime.HandleTime((int)enLine.consumeTime); } }
通過時序圖來整理1下邏輯



策略模式

策略模式是包括了不同的計算方法適用于不同的情況,使用者可以不關心具體調(diào)用那個算法,可以通過其中的CountContext來肯定。可以靈活的增加計算方法。


策略模式的使用是通過CountContext來進行的,通過CountContext()方法來肯定實例化那個子類,然后在CountAllCash中調(diào)用實例化的子類的方法。

public class CountContextBLL { public CountSuperBLL m_CountSuperBLL; public CountContextBLL(string strCardType) { BasicDataBLL BasicDataBLL = new BasicDataBLL(); List<BasicDataModel> myList = new List<BasicDataModel>(); myList = BasicDataBLL.GetData(); foreach (BasicDataModel BasicData in myList) { decimal decFix = BasicData.rate;//得到固定用戶的收費標準 decimal decTemp = BasicData.temporaryRate;//臨時用戶的收費標準 switch (strCardType) { case "固定用戶"://如果是固定用戶就實例化固定用戶消費金額的計算 m_CountSuperBLL = new FixUserCashCountBLL(decFix);//初始化 break; case "臨時用戶"://如果是臨時用戶就實例化固定用戶消費金額的計算 m_CountSuperBLL = new tempUserCashCountBLL(decTemp);//初始化 break; default : break; } } } /// <summary> /// 供客戶端調(diào)用的方法 /// </summary> //上機時間作為參數(shù),進行調(diào)用 public decimal CountAllCash(int onlineTime) { return m_CountSuperBLL.CashCount(onlineTime); //實際調(diào)用的是在CountContext中的實例化的子類的方法 } }
總結

       用完這兩個模式有1種感覺,模式就是把我們本來寫在1個類中的方法分別的寫到子類中,在使用的時候根據(jù)不同的情況來實例化子類然后調(diào)用其中的方法。使得客戶端調(diào)用時不用知道B層的方法具體是干甚么的,避免了在使用時使用過量的if語句進行判斷,1定程度上實現(xiàn)了U層和B層解耦。

      面向?qū)ο蟮恼J識知識開了個頭,歡迎大家多多指教!

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 最近最新日本中文免费 | 亚洲精品视频区 | 久久精品这里 | 一级毛片不收费 | 国产乱辈通伦影片在线播放亚洲 | 亚洲免费影院 | 波多野结衣一二三区 | 日韩在线不卡一区在线观看 | 国产成人久久精品二区三区 | 九操网| 国产高清1024永久免费 | 亚洲性受| 日韩免费专区 | 在线观看亚洲网站 | 欧美视频在线观看视频 | 久久综合精品国产一区二区三区无 | 国产在线高清不卡免费播放 | 国产乱通伦 | 一级爱爱片 | 亚洲区欧美区 | 全亚洲最大的免费影院 | 中文字幕123 | 午夜免费影院 | 精品欧美激情在线看 | 久久亚洲精中文字幕冲田杏梨 | 性xxxxfreexxxxx国产 | 国产精品亚洲午夜一区二区三区 | 羞羞影院男女午夜爽爽影视 | 亚洲www在线 | 亚洲精品综合一二三区在线 | 久草在线视频福利 | 亚洲第99页 | 亚洲永久精品一区二区三区 | 精品国产高清不卡毛片 | 日本动漫免费看 | 国产午夜精品一区二区三区不卡 | 性欧美高清极品猛交 | 亚洲欧美日韩国产精品 | 欧美一级视频在线高清观看 | 国产精品一区久久 | 亚洲精品视频在线免费 |