有關機房收費系統學生下機的思考
阿新 • • 發佈:2019-02-11
所謂的專家,就是在一個很小的領域把所有的錯誤都犯過的人
---------題記
做機房收費系統也有一段時間了,目前已經進行到學生下機操作了。因為學生下機操作時,需要根據不同使用者的類別,來進行相應的結賬服務,於是乎就想到了以前學習到的設計模式,那麼針對這個問題,可以用到那些模式呢?小編在這裡總結一下。(可能有些模式過於勉強,但這都無所謂,學習的真諦就在於此,不斷的重複和實驗)
-------------------------------------------------------------------------------------------------------------------------------------------------------
前言
先分析下下機需要用到的資料
固定使用者每小時費用:代表會員級別每小時花費金額
臨時使用者每小時費用:代表臨時使用者每小時花費金額
至少上機時間:學生如果上機時間小於此的話,就按此時間計算
準備時間:此時間不計算在學生上機時間裡面
至少金額:上機時間小於至少上機時間的,就按此計算
策略模式
策略模式以前也寫過類似的部落格,連線如下
類圖
Strategy介面:封裝了不同類別使用者計算金額的演算法
Context類:封裝了不同的角色,當外部呼叫時,無須知道演算法,直接例項化該類即可
程式碼:
''' <summary> ''' 策略的介面 ''' </summary> ''' <remarks></remarks> Public Interface Strategy ''' <summary> ''' ''' </summary> ''' <param name="consumeTime">花費的時間</param> ''' <param name="bill">不同型別使用者上機每小時花費金額</param> ''' <returns>返回消費的金額</returns> ''' <remarks></remarks> Function ConsumeMoney(ByVal consumeTime As Single, bill As Single) As Single End Interface ''' <summary> ''' 固定使用者實現介面 ''' </summary> ''' <remarks></remarks> Public Class regularUser Implements Strategy Public Function ConsumeMoney(consumeTime As Single, bill As Single) As Single Implements Strategy.ConsumeMoney '如果小於準備時間的話,不收費的 If consumeTime < 5 Then Return 0 '如果小於最少上機時間的話,就收費最少金額 ElseIf consumeTime > 5 And consumeTime < 30 Then Return 2 Else Return bill / 60 * consumeTime End If End Function End Class Public Class context '抽象策略 Dim strategy As Strategy = Nothing '建構函式設定具體策略 '注意在vb.net中使用sub new()關鍵字來使用建構函式 Sub New(ByVal _strategy As Strategy) Me.strategy = _strategy End Sub '封裝後的策略方法 Public Sub count(ByVal consumeTime As Single, bill As Single) Me.strategy.ConsumeMoney(consumeTime, bill) End Sub End Class
特別宣告:這只是一個學生下機結賬的小Demo。
未完待續……