1.前提
1.模板方法模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
2.组合方法
之前写过一篇博客,讲述实现任意组合查询。中心思想:将所有的查询都看做一种情况来处理(http://blog.csdn.net/lypf19900912/article/details/8959245)
3.三层架构
用户界面表示层(UL);业务逻辑层(BLL);数据访问层(DAL)
2.目的
利用模板方法来实现组合查询
3.分析
组合查询在机房收费系统中出现了很多次。他们的界面如图:
实现组合查询的过程也很类似,他们对条件进行组合然后进行查询。细分一下他们实现的相同点和不同点
相同点:选择的条件 拼接成的字符串;不同点:字段的具体内容
那么对于这个组合查询来说实现的步骤是不变的(选择条件然后拼接字符串),但是实现某些步骤的具体实现是不同的(字段的具体内容不同)。
4.实现
在BLL层建立一个抽象类和他的子类。抽象类中有一个虚方法:选择的字段(不同点)
四个实方法:选择的操作符,选择的内容,选择的组合关系,拼接字符串
Imports CooperateJF.Entity
Imports CooperateJF.Factory
Imports CooperateJF.IDAL
Namespace BLL
''' <summary>
''' 建立组合查询的抽象类
''' </summary>
Public MustInherit Class CombinCheckBLL
''' <summary>
''' 组合方法
''' 完成字段的拼接
''' </summary>
''' <param name="enGroupOne">第一条组合
''' 传递三条字段信息</param>
Public Function Combin(ByVal enGroupOne As GroupEnt