引言
在机房重构再次遇到组合查询的时候非常的兴奋,这是因为在学习VB.NET的时候写过名为《vb.net——窗体继承》的博客,当我在谋划组合查询的时候看到完全的四个窗体就立马想到了这个知识,当时还不知道这是个设计模式,当学完了设计模式之后因为没有进行实践,所以第一反应不是设计模式而是自己写过的博客,这样凸显了博客的作用,但是现在知道了这是一种设计模式,就在接下来对这个模式进行小结一下。
理论部分
模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法结构即可重定义该算法的某些特定的步骤。
类图:
优点:模板方法是通过把不变行为搬移到超类,去除子类中的重复代码类体现它的优势,这样就提供了一个很好的代码复用平台,大大的提高了效率。
实践部分
在上面介绍了一些关于模板方法的基本知识,下面就结合机房收费系统中的组合查询来对模板方法小试一把。
首先在U层创建一个父窗体:
下面来看一下我们父窗体中的基本代码:
'定义一个保护类型 的变量,子窗体也可以访问
Protected groupcheck As Entity.EN_GoupCheck = New Entity.EN_GoupCheck()
Private Sub frmGoupCheck_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'操作符部分,因为操作符不变,所以在父窗体中加载
cobOperator1.Items.Add(">")
cobOperator1.Items.Add("<")
cobOperator1.Items.Add("=")
cobOperator1.Items.Add("<>")
cobOperator2.Items.Add(">")
cobOperator2.Items.Add("<")
cobOperator2.Items.Add("=")
cobOperator2.Items.Add("<>")
cobOperator3.Items.Add(">")
cobOperator3.Items.Add("<")
cobOperator3.Items.Add("=")
cobOperator3.Items.Add("<>")
'关系
cobRelations1.Items.Add("与")
cobRelations1.Items.Add("或")
'cobRelations1.Items.Add("")
cobRelations2.Items.Add("与")
cobRelations2.Items.Add("或")
'cobRelations2.Items.Add("")
'在加载的时候,只有第一行控件可用,后两行控件不可用
cobFieldName2.Enabled = False
cobFieldName3.Enabled = False
cobOperator2.Enabled = False
cobOperator3.Enabled = False
cobRelations2.Enabled = False
txtContent2.Enabled = False
tx