zoukankan      html  css  js  c++  java
  • 有关机房收费系统学生下机的思考

    

     

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

                                                                                                                                                                              ---------题记

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

     

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

    前言

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

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

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

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

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

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

     

    策略模式

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

    策略模式总结

    类图

    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

     未完待续……

     

     

     

     

  • 相关阅读:
    ASP.NET缓存页面
    SQL2005没有服务端开启程序
    Cookie创建以及清除Cookie数组
    http 错误编号大全(转)
    .net 控件库名称
    window.location.hash属性介绍
    CSS半透明滤镜在FIREFOX和IE下面的能够通用的写法
    兼容性问题
    Js获取窗体大小
    springcloud 微服务分布式 flowable 工作流 前后分离vue.js 集成代码生成器 shiro权限
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4032839.html
Copyright © 2011-2022 走看看