【机房重构】——查看上机记录、充值记录+三层+存储过程+模板方法
2015-05-03 16:08
344 查看
模板方法
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。即:重复度高的窗体,可以用模板方法,比如组合查询。少数的不同之处在父类中定义虚方法,在子类中重写。
分析
一般用户中,充值记录,和上机记录除了查询的表不一样,其它一模一样,所以考虑用模板方法,这样可以达到事半功倍的效果。详细步骤及代码
父类:新建普通Windows窗体:U层:
'********************************************** '说明:U层 '计算机名称:ZHAOHAN '创建日期:2015/4/24 16:13:58 '作者:赵寒 '版本号:V2.00 '********************************************** Public Class frmQueryParent Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnchk.Click Dim e_card As New ChargeEntity.EComQueryParent Dim b_queryinfo As New ChargeBLL.QueryBLL e_card.CardNo = txtcardno.Text e_card.GetTable = GetTable() If b_queryinfo.queryInfo(e_card) Is Nothing Then MsgBox("没有记录,请重新设置查询条件", vbOKOnly, vbExclamation) DataGridView1.DataSource = Nothing Else DataGridView1.DataSource = b_queryinfo.queryInfo(e_card) End If End Sub '定义虚方法 Protected Overridable Function GetTable() As String Return "" End Function End Class
B层:
'********************************************** '说明:B层 '计算机名称:ZHAOHAN '创建日期:2015/5/3 11:01:32 '作者:赵寒 '版本号:V2.00 '********************************************** Public Class QueryBLL Public Function queryInfo(ByVal cardno As ChargeEntity.EComQueryParent) As DataTable Dim d_query As New ChargeDAL.sqlPQuery Dim e_query As New ChargeEntity.EComQueryParent Dim table As New DataTable table = d_query.GroupQuery(cardno) Return table End Function End Class
D层:
'********************************************** '说明:D层 '计算机名称:ZHAOHAN '创建日期:2015/5/3 10:24:35 '作者:赵寒 '版本号:V2.00 '********************************************** Imports System.Data.SqlClient Imports IDAL Public Class sqlPQuery Public Function GroupQuery(ByVal info As ChargeEntity.EComQueryParent) As DataTable Dim strSql As String = "PROC_QueryLR " '连接存储过程 Dim sql As New SqlHelper Dim sqlparams As SqlParameter() = { New SqlParameter("@datatable", info.GetTable),'存储过程赋参值 New SqlParameter("@cardno", info.CardNo) } Return sql.ExecSelect(strSql, CommandType.StoredProcedure, sqlparams) End Function End Class
实体层:
<pre name="code" class="vb">Private e_gettable As String
Public Property GetTable As String'用于存表名 Get Return e_gettable End Get Set(value As String) e_gettable = value End Set End Property Private e_cardno As String’用于存卡号 Public Property CardNo As String Get Return e_cardno End Get Set(value As String) e_cardno = value End Set End Property
存储过程:
CREATE PROCEDURE PROC_QueryLR @datatable varchar(20), @cardno varchar(10) AS declare @tempSql varchar(500) begin SET @tempSql='SELECT * FROM '+@datatable+' where CardNo ='+@cardno EXECUTE(@tempSql) end
子类:
先建立继承窗体
学生查看充值记录样图:
因为充值记录查询和上机记录查询,仅查询表不同,所以除了获取表名需要重写外,其它都不用再写。so子窗体只需要写这一点点代码。查询上机记录同上。
'********************************************** '说明:U充值记录查询子窗体 '计算机名称:ZHAOHAN '创建日期:2015/4/24 16:13:58 '作者:赵寒 '版本号:V2.00 '********************************************** Public Class frmchkRecharge '重获表名 Protected Overrides Function GetTable() As String Dim tabale As New ChargeEntity.EComQueryParent tabale.GetTable = "ReCharge_Info" Return tabale.GetTable End Function End Class
总结:
这样,通过模板方法,就有了事半功倍的效果,设计模式真的好强大。相关文章推荐
- 机房重构之学生查看上机记录
- 【机房重构】组合查询——模板方法
- 机房重构(5)——模板方法实现组合查询
- 【机房重构】——模板方法解决组合查询
- 【机房重构】—模板方法+存储过程简单实现组合查询
- 机房重构—组合查询&模板方法
- 机房重构之模板方法模式
- 机房重构-组合查询(模板方法)
- 机房收费系统之查看上机记录
- 机房重构——模板方法模式+单例模式+存储过程优化组合查询
- 机房重构模板方法
- 【机房重构】模板方法模式应用—组合查询
- VB.NET版机房重构----模板方法+存储过程实现组合查询
- 重构机房收费系统之 模板方法模式
- vb.net版机房重构--充值记录查询
- 重构机房收费系统之 模板方法模式
- 机房重构--模板方法
- 【机房重构】组合查询之模板方法
- 【机房个人重构】组合查询--模板方法
- 组合查询=实体+模板方法——机房重构点滴积累