【VB开源代码栏目提醒】:以下是网学会员为您推荐的VB开源代码-在VBNET中使用设计模式 - 大众科技,希望本篇文章对您学习有所帮助。
第22卷 第10期2006年10月甘肃科技GansuScienceandTechnoIogyVol.22 No.10Oct. 2006在
VB.NET中使用设计模式陈 智121.邵阳学院信息与电气工程系湖南邵阳4220002.兰州交通大学信息与电气工程学院甘肃兰州730070摘 要作为一种新一代的面向对象程序设计语言V.NET在编写
代码时常常采用设计模式以增强程序的可读性、可扩展性和可重用性。
本文结合一个简单的例子使用V.NET实现了一种改进的工厂模式并简单总结了V.NET使用设计模式的优缺点和潜在的问题。
关键词V.NET面向对象设计模式工厂模式中图分类号TP311.11 编写
代码是软件生命周期中系统设计的最后一个环节
代码的好坏直接影响程序的可读性和可扩展性。
要编写好的
代码一方面需要一种好的编程设计思想另一方面需要一种好的程序设计语言。
随着面向对象程序设计方法的普遍应用设计模式得到越来越多程序员的关注并成为一种普遍使用的编程设计思想。
而随着微软.NETFramework2.0的推出不同程序设计语言之间的差异性也进一步缩小这种缩小集中表现在编程设计思想的普遍适用如V.NET虽然在语法上仍然保留了大部分asic程序的语法其主导设计思路和编写风格已经和C.NET、J.NET、C.NET甚至Sun公司极力推崇的
Java相差无几。
1 面向对象和设计模式面向对象方法OOP是一种自底向上的开发方法程序的开发人员从“对象”的角度出发提取对象中共同的特性抽象为类在类的基础上一步步构造系统。
面向对象方法具有以下三个特点1封装性EncapsuIation封装性是对象的信息隐蔽原则由于对象与其操作是封装的所以在对某个对象修改时只涉及该对象该类的细节不影响整个
系统。
2继承性nheritance继承性指能直接获得已有的特性而不必重新定义当子类继承父类时只需指明它具有哪些父类定义以外的新特性保证了软件的可重用性。
3多态性PoIymorphism多态性是指基类的一个方法可以被多个派生类所共享每个派生类都以适合自己的方式实现这个操作。
面向对象方法与人类习惯的思维方式一致.与结构化编程方法相比程序具有更好的可重用性特别适用于开发用户驱动的系统。
在使用面向对象的过程中程序的设计与开发人员就一些重复出现的设计问题提出了通用的
设计方案并予以系统化的命名和动机解释就形成了设计模式DesignPattern12。
设计模式描述问题提出了解决
方案并指出在什么条件下使用该方案以及其效果。
按照目前的分类方法设计模式分为创建型模式结构型模式和行为型模式三大类。
对设计模式的合理运用能够充分发挥面向对象编程的优势有效地保证程序的质量。
2 NETFramework和
VB.NET.NETFramework是支持生成和运行下一代应用程序和XMLWebServices的内部Windows组件3。
.NETFramework旨在实现下列目标1提供一个一致的面向对象的编程环境而无论对象
代码是在本地存储和执行还是在本地执行但在nternet上分布或者是在远程执行的。
2提供一个将
软件部署和版本控制冲突最小化的
代码执行环境。
3提供一个可提高
代码包括由未知的或不完全受信任的第三方创建的
代码执行安全性的
代码执行环境。
4提供一个可消除脚本环境或解释环境的性能
问题的
代码执行环境。
5使开发人员的经验在面对类型大不相同的应用程序如基于Windows的应用程序和基于Web的应用程序时保持一致。
6按照工业标准生成所有
通信以确保基于.NETFramework的
代码可与任何其他
代码集成。
.
NETFramework具有两个主要组件公共语言运行库和.NETFramework类库。
公共语言运行库是.NETFramework的基础它可以被看作是一个在执行时管理
代码的代理.NETFramework类库是一个综合性的面向对象的可重用类型集合可以使用它开发多种类型的应用程序这些应用程序包括传统的命令行或图形用户界面GUi应用程序也包括基于ASP.NET所提供的最新创新的应用程序如Web窗体和XMLWebServtes。
VB.NET是应用.NETFramework几种程序设计语言之一由于采用.NETFramework作为程序开发的平台
VB.NET与其之前的版本有着很大的不同45这种不同可以通过一个简单的例子看出来。
3 在
VB.NET中使用设计模式3.l 希望实现的功能考虑实现这样一个简单的功能在一个对象譬如PtureBox中绘制特定的图形如三角形、矩形和五边形。
由于本文并不是讨论如何绘图所以只是将要进行的操作显示在一个文本框Tex-Box中从而使整个
程序的结构更加清晰。
在
VB.NET中针对这一需求设计如下的窗体其中控件属性作用TexBoxNamexinpuTex接受用户输入TexBoxNamexupuTexReadNyrue显示输出结果BuonNamebnraw触发绘制图形的事件 当程序运行时用户在边数xinpu中输入3、4或5表示绘制三角形、矩形或五边形点击绘制bnraw程序判断用户的输入在结果xu-pu中输出绘制的提示信息。
3.2 工厂模式的编程设计思想工厂模式FatoryPaern是一个创建型模式67它在程序的功能逻辑层定义一个用于创建对象的“工厂”根据不同的条件由“工厂”来决定具体生产哪种“产品”每一种“产品”其实就是一个类。
工厂模式的优点在于程序可以在运行期间根据上下文需要动态的装载某个类一个具体实例从而使用户界面层中调用该类的程序
代码可以在不需要了解该类内部具体实现的情况下很容易地支持这个类各种不同的实现以及变化。
这样从程序的层次逻辑上来看就将程序的用户界面层和功能逻辑层有效地分割开来形成基本互相独立的C/S的两层使程序具有很好的封装性、可扩展性和可重用性。
3.3 编程实现采用工厂模式解决这一问题可以按照以下的步骤进行l在命名空间中创建Shape基类所有的具体的图形的类都继承自这个类包括三角形、矩形和五边形的类。
NamespateShapeFatory命名空间PubtCassShape基类ProetedmrawinfoAsSrng绘制图形PubtFuntonrawShapeAsSrngReurnmrawinfoEndFuntonEndCassPubtCassTrange三角形inhersShapePubtSubNewmrawinfo绘制三角形EndSubEndCass矩形和五边形的类和三角形的类似EndNamespate2特殊地创建了一个叫N的类用来表示所有不支持的“产品”。
增加这样一个看似无用的类其实是非常必要的它处理了功能逻辑层的有效性检验并使整个程序的结构更加清晰也可以避免使用了模式但是仍然需要在功能逻辑层和用户界面层同时修改的问题出现。
这一点可以从创建“工厂”的类ShapeCreaer的CaseEse部分看出来。
97第l0期 陈 智在
VB.NET中使用设计模式 NamespaceShapefactOry命名空间PubicCiassNiInhertsShapePubicSubNewmdrawInO只能绘制边数3-5的图形EnSubEnCiassEnNamespace3创建“工厂”的类ShapeCreater由这个类生成所需要的“产品”的类返回给调用者。
NamespaceShapefactOry命名空间PubicCiassShapeCreaterPubicfunctOnCreateShapeByvaiEgesAsIntegerAsShapedmsAsShapeSeiectCaseEgesCase3三角形sNewTrangieCase4矩形和三角形类似Case5五边形和三角形类似CaseEise非法输入sNewNiEnSeiectReturns返回具体的对象EnfunctOnEnCiassEnNamespace4与之对应在btndraw_Cick中的
代码如下PrateSubbtndraw_CickByvaisenerAsSystem.bjectByvaieAsSystem.EentArgsaniesbtndraw.CickdmntInAsInteger取得输入ntInCInttxtInput.TextdmObjCreaterAsShapeCreaterdmObjShapeAsShapeObjCreaterNewShapeCreaterObjShapeObjCreater.CreateShapentIntxtutput.TextObjShape.drawShapeEnSub分析这种做法可以看出如果再需要绘制其他图形所需要做的修改会被完全封装在了命名空间ShapefactOry中btndraw_Cick中的
代码不需要任何改动。
进一步来说可以将功能逻辑层的部分也就是程序的123部分封装到服务器端形成独立的服务将“工厂”可以生产的“产品”以一个文本文件的形式保存发送给用户界面层形成的客户端也就是程序的4部分。
在客户端将用于接受输入的TextBOx控件txtInput换成COmbOBOx控件读取保存“产品”的文本文件这样当程序的功能扩充后客户端只要得到新的“产品”文件就可以了。
这种做法可以使程序的灵活性和可扩展性得到很大的提高方便用户使用也使设计模式的优点更加突出。
4 结束语在以上的例子里讨论了一种增加了功能逻辑层有效性检验Ni类的改进工厂模式这种改进并没有改变工厂模式原来的结构而是针对
vB.NET的语言特点使工厂模式能够更好地发挥其优势。
对以上编码进行进一步分析可以看出在
vB.NET中采用面向对象方法和设计模式编写
代码与传统的编码方法有着非常明显的不同这种不同为程序带来了更大的柔性。
同时虽然模式可以做一定的修改但是某一个模式的框架结构是基本不变的这也使程序更加容易理解并具有较强的可重用性。
但是从另一个方面来看使用设计模式也可能在一定程度上增加程序的复杂性事实上对设计模式的滥用甚至会导致程序
代码的过度复杂从而造成程序难以维护另外设计模式不是一成不变的对设计模式的灵活应用也对程序的开发人员提出了更高的要求。
参考文献1 美JamesW.COOperJaa设计模式影印版2002.92 周轶刚、康建初可重用软件模式
计算机工程与应用2002.1787-903 MSdN中文网站http//msn.mcrOsOt.cOm/chna4 微软公司vsuaiBasc.NET和vsuaiC.NETWnOws应用程序开发2003.65 微软公司.NET中
常用的几种设计模式2004.56 张世博、周树杰、闵艳Jaa程序开发中的设计模式微型电脑应用2002.945-477 黄奇为工厂模式编程实践科技
创业月刊2004.1217-1808 甘 肃 科 技 第22卷