日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

來源:程序員人生   發布時間:2015-06-12 08:21:43 閱讀次數:3565次

這兩個模式在進行個人重構的時候也使用了,當時是懵懵懂懂的,現在合作中又使用了1遍,思路清晰了很多,感覺這些設計模式之間有千絲萬縷的聯系,工夫還不到家還得漸漸的理1理,記得有個師哥說過“到最后會發現設計模式其實就1個”,所以努力吧!先看看這兩個模式的利用。
職責鏈:肯定消費時間
策略:計算不同類型卡的消費金額
職責鏈模式的好處比較直接的就是可以免使用復雜的if語句,解耦了要求者和處理者,而且可以靈活的增加處理者,不會背背開放封閉原則。職責鏈模式的使用,是通過其中的OnLineCount來進行的,然后由調用其中的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)); //實例化準備時間的類,同時用基本數據里的準備時間對其進行初始化 UnitTimeHandlerBLL unitTime = new UnitTimeHandlerBLL((int)(enBasicData.unitTime)); //實例化單位時間的類,同時用基本數據里的單位時間對其進行初始化 LeastTimeHandlerBLL leasetTime = new LeastTimeHandlerBLL((int)(enBasicData.limTime)); //實例化最少上機時間的類,同時用基本數據里的最少上機時間對其進行初始化 //設置準備時間的后繼者,如果準備時間處理不了,則用最少上機時間進行處理 prepareTime.SetCalculate(leasetTime); //設置最少時間的后繼者,如果最少時間處理不了,則用單位上機時間進行處理 leasetTime.SetCalculate(unitTime); //調用準備時間的的方法開始進行處理 return prepareTime.HandleTime((int)enLine.consumeTime); } }
通過時序圖來整理1下邏輯



策略模式

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


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

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> /// 供客戶端調用的方法 /// </summary> //上機時間作為參數,進行調用 public decimal CountAllCash(int onlineTime) { return m_CountSuperBLL.CashCount(onlineTime); //實際調用的是在CountContext中的實例化的子類的方法 } }
總結

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

      面向對象的認識知識開了個頭,歡迎大家多多指教!

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久国产精品视频免费看 | 在线视频 日韩 | 久久久蜜臀 | 国产精品色综合一区二区三区 | 国产综合久久久久 | 免费久久网 | 91精品国产91久久久久久吃药 | 特级a做爰全过程片 | 希岛爱理和黑人中文字幕系列 | 久久久青草婷婷精品综合日韩 | 国产精品日韩欧美一区二区 | 精品视频在线免费观看 | 欧美一级淫片 | 久久久久久久久国产 | 欧美在线一区二区三区四区 | 污污网站入口 | 久久久精| 亚洲一区二区三区精品视频 | 性高潮网站 | 亚洲不卡视频 | 另类激情视频 | 久久免费国产精品1 | 91成人国产| 欧美大片黄色 | 免费视频一区二区 | 91精品国产欧美一区二区 | 一级黄色片一 | 久久久久亚洲一区二区三区 | 日韩av电影网 | 国产区在线看 | 欧美性猛交xxxx黑人交 | 国产亚洲女人久久久久毛片 | 日韩第一页 | 日韩欧美不卡视频 | 日韩免费小视频 | 精品亚洲一区二区三区 | 亚洲二区在线视频 | 国产毛片久久久久久国产毛片 | 黄色大片网站 | 毛片在线免费播放 | 日本大片免a费观看视频的特点 |