【前言】
說到設計模式,又熟悉又陌生,為什麼這麼說呢?熟悉是因為學過設計模式,明白了當時學習的例子;陌生是因為放到重構不會用,參考了很多部落格,才知道如何用這個職責鏈模式。
【內容】
bll層
沒有設計準備時間,上機滿一分鐘即收費。
public class chainbll
public decimal consumecash(double time ,string type)
// 定義乙個抽象類,來處理各個請求
public abstract class chainmoney
//處理請求計算時間的方法
public abstract void consumecash(double time,string type);
}//設定責任鏈上的繼承者
//當時間在1分鐘到1小時內則有權處理,否則轉到下一位
public class concrechainmoney1 : chainmoney
else if (successor != null)}}
//當時間大於1小時則有權處理,否則轉到下一位
public class concrechainmoney2 : chainmoney
else if (successor != null)
}}
facade層
public class chainfacade
}
u層(**未優化前)
public void consumecash()
else
time = timecount.totalminutes;
consumecash = chainfacade.consumecash(time,type);
lblconsumecash.text = consumecash.tostring();
}
C 機房重構 下機(職責鏈模式)
職責鏈模式 職責鏈 當客戶提交乙個請求時,請求是沿著鏈傳遞,直至有乙個concretehandler物件負責處理,接收者和傳送者都滅有對方的明確資訊,且鏈中的物件自己也並不知道鏈的結構,僅需保持乙個指向其後繼者的引用。具體實現 在機房重構中職責鏈主要用於確定學生的消費時間,以下為具體的實現 抽象類p...
重構 下機 職責鏈模式
使用者下機,進行金錢和時間的計算,需要進行多重判斷 在責任鏈模式裡,很多物件由每乙個物件對其下家的引用而連線起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。發出這個請求的客戶端並不知道鏈上的哪乙個物件最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織和分配責...
機房重構 下機 職責鏈模式 策略模式(理論篇)
第一次機房收費系統的時候,我們側重於功能的實現,對於大範圍的使用if.else,沒有太明顯的感覺。可當我們學完設計模式之後,才發現原來多次使用if.else,會使程式產生很高的耦合性,不便修改。對於同樣的下機內容,我們除了要用到七層的知識,可能最大的收穫就是去學習如何把設計模式運用到實踐中去了。1 ...