策略模式 計算消費金額

2021-06-19 18:46:26 字數 2137 閱讀 6805

策略模式它定義了乙個演算法家族,分別封裝起來,讓他們可以互相替換,此模式讓演算法的變化不會影響大到使用演算法的客戶。減少了各種演算法類與使用演算法類之間的耦合。 

畫的類圖是

bll類:

該類是策略模式中的抽象類,是對各種演算法的抽象。

''' ''' 定義所有支援演算法的公共介面

'''

public class cashsuper

''' ''' 現金收取超類的抽象方法,收取現金,引數為消費時間。返回為迎收取的金額。

'''

''' 學生下機時間

''' 學生上機時間

public overridable function acceptcash(byval studentoff as datetime, byval studenton as datetime) as double

end function

end class '

cashnormal:繼承抽象類,實現具體的演算法的類。

它繼承抽象類,它與抽象類的關係是,我繼承你的骨架,包括方法、方法引數和返回值型別。但是具體返回值是如何計算的,該類說了算。這樣無論演算法如何改變都不會對其他類造成影響。在具體的演算法中,如果需要一些具體的資料可以定義帶引數的建構函式實現,這樣具體演算法需要的要的資料就獲得了。而且他不熟寫在系統裡的,是可以改變的。

''' ''' 一般計費規則。其中包括固定使用者計費和臨時使用者計費。

'''

public class cashnormal : inherits cashsuper

''' ''' 每多長時間計費一次

'''

private increasetime as integer = 1

''' ''' 計費時不計入

'''

private preparetime as integer = 0

''' ''' 它與increasetime共同構成單價。

'''

private price as double = 1

''' ''' 現金收取超類的抽象方法,收取現金,引數為消費時間。返回為應收取的金額。

'''

''' 學生下機時間

''' 學生上機時間

public overrides function acceptcash(byval studentoff as datetime, byval studenton as datetime) as double

dim consumetime as integer

dim consumecash as double

'消費金額計算

consumetime = cint(datediff("n", studentoff, studenton)) - preparetime

consumecash = val((price / increasetime)) * val(consumetime)

return consumecash

end function

''' ''' 帶引數的建構函式

'''

''' 它與increasetime構成單價,每increasetime分鐘price元。

''' 準備時間,計算消費金額的時候,不算在其中。

public sub new(byval price as double, byval increasetime as integer, byval preparetime as integer)

me.price = price

me.increasetime = increasetime

me.preparetime = preparetime

end sub

end class

現在越來越覺得設計模式,就是解耦合,將不變的公共的部分抽離,上公升高度。讓具體的細節到子類中去實現。實現了**的復用、易擴充套件和易維護。

策略模式是行為型別的實際模式。行為型別模式使用繼承描述演算法和控制流,而行為型物件模式則描述一組物件怎樣協作完成單個物件所無法完成的任務。

職責鏈模式 消費金額

該類是花費金額職責鏈的入口,用於b層呼叫 public class costmoneychain 該類用於花費金額的抽象類,定義了骨架 public abstract class costmoneyhandler public abstract void consumecash string rat...

機房重構利用策略模式 簡單工廠實現消費金額的計算

在做第一次機房收費系統中。有一項非常令人頭疼的事情,那就是暫時使用者的問題,在結賬的時候,我們需要考慮該使用者是固定使用者還是暫時使用者,原來在用vb6.0做的時候,假設我們實現了這個功能,那麼在 中會出現非常多的if.else 語句,同一時候。我們必需要呼叫資料設定視窗中的資料。這種話,會非常麻煩...

北京地鐵月度消費總金額計算 Python版

最近業餘時間在學習python,這是那天坐地鐵時突發奇想,想看看我這乙個月的地鐵費共多少錢,所以簡單的構思了下思路,就直接開寫了,沒想到用python來實現還挺簡單的。設計思路 每次乘車正常消費7元,每天乘車2次,每月工作日乘車22天。每月乘車總金額超過100元,下次乘車票價的8折 每月乘車總金額超...