标签:style blog http color io ar 使用 for strong
所谓的专家,就是在一个非常小的领域把全部的错误都犯过的人
---------题记
做机房收费系统也有一段时间了,眼下已经进行到学生下机操作了。由于学生下机操作时,须要依据不同用户的类别,来进行对应的结账服务,于是乎就想到了曾经学习到的设计模式,那么针对这个问题,能够用到那些模式呢?小编在这里总结一下。(可能有些模式过于勉强,但这都无所谓,学习的真谛就在于此,不断的反复和实验)
-------------------------------------------------------------------------------------------------------------------------------------------------------
先分析下下机须要用到的数据
固定用户每小时费用:代表会员级别每小时花费金额
暂时用户每小时费用:代表暂时用户每小时花费金额
至少上机时间:学生假设上机时间小于此的话,就按此时间计算
准备时间:此时间不计算在学生上机时间里面
至少金额:上机时间小于至少上机时间的,就按此计算
策略模式曾经也写过类似的博客,连接例如以下
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。
未完待续……
标签:style blog http color io ar 使用 for strong
原文地址:http://www.cnblogs.com/lcchuguo/p/4032839.html