zoukankan      html  css  js  c++  java
  • 运用简单工厂实现登陆权限的选择

            在敲机房收费系统重构版之间我们学习了设计模式,可是除了书上的实例外我们并没有再去深究这些东西,同一时候可敢肯定的是我们在刚学习设计模式的时候也不是非常清楚每一个详细的处理逻辑。就像我们之前学过的非常多东西一样,仅仅是先了解一下有这么个东西存在,以后用的时候再深究当中的原理。

    在机房收费系统中用简单工厂或者是策略模式最好的地方事实上是处理固定用户和暂时用户结账下机的时候。不同级别的用户,依照不用的方式进行结算(写到这里不禁想起来没有接触设计模式之前还以为这根数据库的设计有关系)。

            以下是我在B层关于简单工厂的实现代码

    Imports System.Windows.Forms
    '定义一个基类
    Public Class PermissionsSuper
        Public Overridable Sub ChooseP(ByVal menu1 As ToolStripMenuItem, ByVal menu2 As ToolStripMenuItem, ByVal menu3 As ToolStripMenuItem)
        End Sub
    End Class
    
    '一般用户类
    Public Class ChooseGeneral
        Inherits PermissionsSuper
        Public Overrides Sub ChooseP(ByVal menu1 As ToolStripMenuItem, ByVal menu2 As ToolStripMenuItem, ByVal menu3 As ToolStripMenuItem)
            menu1.Enabled = True
            menu2.Enabled = False
            menu3.Enabled = False
        End Sub
    End Class
    
    '操作员,管理员相似一般用户
    Public Class ChooseOperator   
    
    '权限工厂
    Public Class PermissionsFactory
        Public Shared Function ChoosePermissions(ByVal LoginUserLevel As String) As PermissionsSuper
            Dim ps As PermissionsSuper = Nothing
            Select Case (LoginUserLevel)
                Case "一般用户"
                    ps = New ChooseGeneral()
                    Exit Select
                Case "操作员"
                    ps = New ChooseOperator()
                    Exit Select
                Case "管理员"
                    ps = New ChooseManager()
                    Exit Select
            End Select
            Return ps
        End Function
    End Class

    以下是U层中实现的代码:

     '定义并赋值菜单条变量
            Dim menu1, menu2, menu3 As ToolStripItem
            menu1 = GeneralUser
            menu2 = OperatingUser
            menu3 = ManagerUser
    
            '定义一个变量获得用户级别
            Dim LoginUserLevel As String = UserLevel
    
            '在权限工厂中选在要调用的子工场
            Dim pSuper As RechargeBLL.PermissionsSuper
            pSuper = RechargeBLL.PermissionsFactory.ChoosePermissions(LoginUserLevel)
    
            '运行子工厂
            Call pSuper.ChooseP(menu1, menu2, menu3)

    说实话除了策略模式因为看过“永和收银系统(真的非常强大,维护该系统压力不小啊)”后台的配置管理,抽象工厂加反射外其它的模式如今还体会不了它们的伟大之处。反倒是认为加上设计模式后,系统的实现变得复杂了,就在这个登录时的权限选择,其有用If.....elseif.....或者select case实现起来要方便得多。
            可能关于面向对象、设计模式的各种优点听了非常多,可是因为在实际的学习过程中还没有遇到详细的问题,所以实际的感受也仅仅有麻烦了。知道某个知识点easy,理解起来还是要费些精力;且学且感悟!

    
    
    
    
    
  • 相关阅读:
    「读书感悟」三体
    「PLC」PLC基本编程
    利用一个Demo说明Castle+NHibernate的实现
    采用jquery实现简单的计算器
    Html+css+Jquery模拟电影院购票
    Jquery实现简单的导航单并且经常使用
    H5的video元素实现的Demo
    JQuery编写的定时器实现时钟
    Castle.net
    1056. 组合数的和(15)
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4018522.html
Copyright © 2011-2022 走看看