先說一下機房收費系統中為什麼要有消費時間計算這個問題,首先學生上機應該有乙個準備時間,這段時間短短幾分鐘,可以不收費的;其次還要有乙個最少上機時間,也就相當於打車時的起步價一樣,收乙個固定費用;再最後就是單位遞增時間了,可以10分鐘、30分鐘或一小時等等,也就是多長時間給使用者計算一次費用。
根據以上需求,這是乙個依次遞進的過程,準備時間——最少上機時間——單位遞增時間,這樣就形成了一條職責鏈。
職責鏈模式
使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係,將這個物件連成一條鏈,並延著這條鏈傳遞該請求,直到有乙個物件處理它為止。
好處:
1、職責鏈可簡化物件的相互連線,它們僅需保持乙個指向其後繼者的引用,而不需保持它所有的候選接受者的引用,大大降低耦合度;
2、鏈的結構是在客戶端來定義,可以隨時增加或修改處理乙個請求的結構,增強了給物件指派職責的靈活性。
結構圖如下:
handler類
public abstract class timehandler
//處理請求的抽象方法
public abstract int handletimerequest(int time);
}
具體處理者類
public class leasttimehandler : timehandler //繼承timehandler類
else}}
public class unittimehandler : timehandler //繼承timehandler類
}
呼叫:
public int costtime(lineinfoentity lineinfo, basicdataentity basicdata)
其實這裡只有乙個最少上機時間判斷,不去套用職責鏈模式會更加簡單,但畢竟還是乙隻小菜鳥,能夠去用、去學習還是有很大收穫的,手中無劍、心中有劍的境界以後會慢慢達到的,加油! Dongle 機房合作 下機之職責鏈模式
機房合作下機之職責鏈模式 首先需要獲得消費時間,由上機時間和下機時間可以獲得,這不是難點。而我們計算下機結賬的時候使用的職責鏈模式,理由就是不同分段的時間由不同的消費標準,通過傳時間引數,依次處理,並得到最後的結果返回。前提獲取基本資料 例如在準備時間內,是不收費的,即消費為0 public cla...
職責鏈模式 消費金額
該類是花費金額職責鏈的入口,用於b層呼叫 public class costmoneychain 該類用於花費金額的抽象類,定義了骨架 public abstract class costmoneyhandler public abstract void consumecash string rat...
機房重構 職責鏈模式應用
我是在上機許可權選擇中使用了職責鏈模式。首先來了解一下職責鏈模式 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。在機房收費系統裡,登入使用者的級別相當於請求,處理者是一般使用者許可權 一般使用者處理者 ...