機房合作 策略 職責鏈在下機中的應用

2021-07-25 03:10:01 字數 2157 閱讀 1004

一、剛開始使用職責鏈模式來實現下機時計算消費金額。

1、父類:countcashmanagerbll

abstract class countcashmanagerbll

//設定繼任者,即所有計算金額的父類

public void setsuperior(countcashmanagerbll superior)

//處理請求的抽象方法,即下機時的收費金額

public abstract onofflineentity getcash(onofflineentity offline);

}

2、子類:firstcountcashbll

//計算第一步時間間隔所花費的金額

public class firstcountcashbll : countcashmanagerbll

public override onofflineentity getcash(onofflineentity offline)

else

return offline;

}}

3、子類:secondcountcashbll

//計算未達到單位遞增時間的消費金額,大於準備時間

public class secondcountcashbll:countcashmanagerbll

else

}else

return offline;

}}

4、子類:thirdcountcashbll

//計算已經達到單位上機時間的消費金額

public class thirdcountcashbll:countcashmanagerbll

else //如果是一般使用者

return offline;

} }

感覺職責鏈雖然在一定程度上解耦了,但還是不夠,於是加上了策略模式。職責鏈:負責算出有多少個單位時間。策略模式:對一般使用者和vip使用者進行分情況討論。**如下。

職責鏈:

firstcountcashbll

//計算第一步時間間隔所花費的時間

public class firstcountcashbll : countcashmanagerbll

else

return offline;

}}

secondcountcashbll:

//計算未達到單位遞增時間的消費金額,大於準備時間

public class secondcountcashbll:countcashmanagerbll

else

return offline;

}} //計算未達到單位遞增時間的消費金額,大於準備時間

public class secondcountcashbll:countcashmanagerbll

else

return offline;

}}

thirdcountcashbll:

public class thirdcountcashbll:countcashmanagerbll

}

策略模式:

cashsuperbll:

public abstract class cashsuperbll

cashcontextbll:

public class cashcontextbll

}//最後外觀層只需要呼叫這個方法就行。

public onofflineentity getconsumecash(onofflineentity offline)

}

generalcashbll:

public class generalcashbll:cashsuperbll

}

vipcashbll:

public class vipcashbll:cashsuperbll

}

Dongle 機房合作 下機之職責鏈模式

機房合作下機之職責鏈模式 首先需要獲得消費時間,由上機時間和下機時間可以獲得,這不是難點。而我們計算下機結賬的時候使用的職責鏈模式,理由就是不同分段的時間由不同的消費標準,通過傳時間引數,依次處理,並得到最後的結果返回。前提獲取基本資料 例如在準備時間內,是不收費的,即消費為0 public cla...

機房重構 下機 職責鏈模式 策略模式(理論篇)

第一次機房收費系統的時候,我們側重於功能的實現,對於大範圍的使用if.else,沒有太明顯的感覺。可當我們學完設計模式之後,才發現原來多次使用if.else,會使程式產生很高的耦合性,不便修改。對於同樣的下機內容,我們除了要用到七層的知識,可能最大的收穫就是去學習如何把設計模式運用到實踐中去了。1 ...

機房重構 上下機(職責鏈模式和策略模式)

機房重構中上機功能相對好實現一些,下機用到了職責鏈模式和策略模式,職責鏈模式算時間,策略模式算消費金額 部分 dal層 public class offdal ioffidal string sql select from card where cardno cardno datatable tab...