您的位置:首页 > 其它

有关机房收费系统学生下机的思考

2017-04-20 18:21 253 查看


所谓的专家,就是在一个非常小的领域把全部的错误都犯过的人

---------题记

做机房收费系统也有一段时间了,眼下已经进行到学生下机操作了。

由于学生下机操作时。须要依据不同用户的类别。来进行对应的结账服务。于是乎就想到了曾经学习到的设计模式,那么针对这个问题。能够用到那些模式呢?小编在这里总结一下。(可能有些模式过于勉强,但这都无所谓,学习的真谛就在于此,不断的反复和实验)

-------------------------------------------------------------------------------------------------------------------------------------------------------

前言

先分析下下机须要用到的数据



固定用户每小时费用:代表会员级别每小时花费金额

暂时用户每小时费用:代表暂时用户每小时花费金额

至少上机时间:学生假设上机时间小于此的话,就按此时间计算

准备时间:此时间不计算在学生上机时间里面

至少金额:上机时间小于至少上机时间的,就按此计算

策略模式

策略模式曾经也写过类似的博客,连接例如以下

策略模式总结

类图

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()keyword来使用构造函数
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。

未完待续……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: