在敲机房收费系统重构版之间我们学习了设计模式,但是除了书上的实例外我们并没有再去深究这些东西,同时可敢肯定的是我们在刚学习设计模式的时候也不是很清楚每个具体的处理逻辑。就像我们之前学过的很多东西一样,只是先了解一下有这么个东西存在,以后用的时候再深究其中的原理。
在机房收费系统中用简单工厂或者是策略模式最好的地方其实是处理固定用户和临时用户结账下机的时候。不同级别的用户,按照不用的方式进行结算(写到这里不禁想起来没有接触设计模式之前还以为这根数据库的设计有关系)。
下面是我在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 ‘定义并赋值菜单栏变量
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)运用简单工厂实现登陆权限的选择,布布扣,bubuko.com
原文:http://blog.csdn.net/senior_lee/article/details/26158715