一、剛開始使用職責鏈模式來實現下機時計算消費金額。
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...