设计模式之模板方法模式
来源:互联网 发布:手机宽带连接拨号软件 编辑:程序博客网 时间:2024/05/17 06:58
从看大话结束,到现在差不多有2个多月了。其实刚开始看大话,只是觉得他讲的特别好,每个模式用故事来分析,印象很深。但是,我想说的是,这些故事,不仅仅给予一个印象深的作用,更重要的是一种思想。这个里面,有好多例子都是一步步改进才得到最后的模式。这样,使得在敲代码的过程中,当看到有重复性多的代码时就会停下来思考,将共同的部分抽象出来。而不是像以前,ctrl+c、ctrl+v。
下面举个例子,起初我用的不是class,而是structure。但是发现在vb.net中structure不一样,所以后来改成class,进而有了下面的改进。(关于structure下篇稍微提一下)
例子中,用到了枚举类型,这个枚举类型是用来动态实现数据库字段名与combobox下拉菜单的关联(好处是省去了select case语句来判断)
首先,看一下我最起初的样子(只列出一个,不然文章会太长,后面同样)
Public Enum OnLineField onlincardno onlinstudentname onlinondate onlinontime onlincomputerEnd Enum'定义查询需要用到的类public Class OnLineCondition Public strOperator As String Public value As String Public strRelation As String Public fieldName as OnLineField ‘初始化 Public Sub New() strRelation="and" strOperator="=" End Sub '填充 Public Sub Fill(ByVal intFileName As Integer, ByVal strOp As String, ByVal strValue As String) fieldName=intFileName strOperator = strOp value = strValue End SubEnd Class
这些类很类似,不一样只是fieldName不一样。敲着敲着,想到了抄卷子这个小故事,然后就翻开大话找到了模板方法模式,然后对这部分进行了改造。下面是改造后的代码。
'父类Public Class Basic
’定义公共变量 Public strOperator As String '查询用到的操作符 Public value As String '待查询字段值 Public strRelation As String '初始化属性 Public Sub New() strOperator = "=" strRelation = "and" End Sub '对变量进行填充,由于枚举类型的特殊性,所以我在这传入了一个整型变量 Public Sub Fill(ByVal intFileName As Integer, ByVal strOp As String, ByVal strValue As String) FillFieldName(intFileName) strOperator = strOp value = strValue End Sub '定义一个虚方法,此方法用于子类定义自己与父类不同的地方——fieldName
Protected Overridable Sub FillFieldName(ByVal intFileName As Integer) End SubEnd Class '子类Public Class basicOnLineInfo Inherits Basic '定义自己特有的OnLineField类型变量 Public fieldName As OnLineField '重写FillFieldName方法 Protected Overrides Sub FillFieldName(ByVal intFileName As Integer) fieldName = intFileName End SubEnd Class
以上就是我对类的改造,大话教的不只是设计模式,更是一种思想
- 设计模式之模板方法模式模板方法模式
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- Java设计模式之模板方法模式
- base-ls
- 从瀑布到敏捷(六)逐步完善项目级的质量保障体系
- struts2 标签详解 转贴
- IIS+花生壳+tomcat:利用免费域名搭建Web站点
- 2012-embedded-2.3
- 设计模式之模板方法模式
- what's OPJO 来自百度
- ZOJ Problem Set - 1093 Monkey and Banana
- 【C++ Design Pattern-Creational】Factory Method(工厂方法)
- 新年上班第一天
- Ubuntu趣味应用探索----我们怎么在ubuntu上玩QQ
- ubuntu下设置samba服务
- 动态维护凸包
- Extjs3.0中的TreeGrid(Ext.ux.maximgb.tg.EditorGridPanel)