简单工厂模式在网上购物系统中的应用

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:loverbeyond
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:在设计与开发网上购物系统各个模块的过程中,综合、灵活地使用了Java的常用设计模式。其中,为了提供对不同数据库系统的良好支持,应用简单工厂模式实现了产品管理模块的相关功能,有效增强了系统的可扩展性和可维护性。
  关键词:设计模式;简单工厂模式;数据库系统
  中图分类号:TP311.10
  产品管理是网上购物系统中最重要的模块之一,前台用户和后台管理员的大部分操作都会涉及产品模块的具体功能。根据客户对系统所支持的用户量、开发成本等不同因素的实际需求,系统定制时有可能会选择不同的数据库系统作为数据源,这就要求我们开发的系统需要提供对不同数据库系统的良好支持。因此,在数据源发生改变,例如,从My SQL数据库变更为SQL Server的时候,应能使得只需要修改少量的代码或配置文件,就可以实现购物网站对不同数据库系统的支持。
  1 设计模式简介
  设计模式(Design Pattern)是一套被反复使用,并且经过分类编目的代码设计经验总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性。设计模式从应用的角度被分为三个大的类型,分别是创建型设计模式、结构型设计模式和行为型设计模式。
  创建型模式,就是用来创建对象的模式,它抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。简单工厂模式属于创建型模式,又被称为静态工厂方法(Static Factory Method)模式。它是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
  2 简单工厂模式在产品管理模块中的应用
  2.1 产品管理模块概述
  产品管理模块采用三层模型进行开发。DAO层负责数据库的相关操作,向下直接访问数据库系统,同时向上层的Product Manager类提供各种操作数据库的服务;Product Manager类位于业务逻辑层,向下调用DAO层提供的各种接口,向上给前台的页面展示提供各种服务;前台的jsp页面直接调用Product Manager类提供的各种方法实现丰富的展示效果。采用分层的模型虽然增加了一定的代码开发工作量,但分层的方式带来的好处也是显而易见的。不但有效降低了各个模块之间的耦合性,很好的实现了相关类内部的封装,而且提高了代码的可扩展性和可维护性,当某一层服务的内部逻辑发生改变时,对外提供的接口不需要改变,使需要修改的代码量减至最少。
  2.2 简单工厂模式的引入
  项目初期,鉴于客户对系统所支持的用户量要求不高,并且开发成本也比较低,项目组选择了My SQL数据库。相应的,对于产品管理模块的设计来说,最基本的实现方式是在Product DAO类中,提供对My SQL数据库进行操作的各种方法,程序中涉及的SQL语句也是只有在My SQL数据库下才可以运行的。当然,考虑到系统后续的扩展性,以及应能提供更强大的数据管理能力和更好的操作性能,可能会选择诸如SQL Server、Oracle等高端数据库产品。这种情况下,必然要修改Product DAO类中的大量代码,系统的灵活性是很差的。Java程序设计提倡“面向接口”编程,即控制反转。因此,我们重新设计了Product DAO类,将其抽象为一个接口,而真正实现对不同数据库系统进行具体操作的代码,放在Product MysqlDAO、Product SQL ServerDAO等实现了Product DAO接口的类当中。
  程序优化到这一步,已经初步实现了支持不同数据库系统的功能。Product Manager类中将持有Product DAO接口的一个引用,当网上购物系统所使用的数据源变更时,我们只需在Product Manager类的setProduct DAO方法中,实例化不同的子类对象即可。但实际上,代码还可以继续优化使得程序的灵活性得到进一步的提高。我们采用了简单工厂设计模式。选择工厂模式的好处在于,可以更加方便的更改应用程序,方便对系统进行扩展。例如,当我们需要在Product DAO接口的基础上再增加一个实现了该接口,并且支持其它数据库系统的子类时,在之前的设计中需要把以前使用Product DAO接口的地方都修改为创建一个新的子类对象,这样做显然也增加了模块间的耦合度。通过使用工厂模式,统一管理对象的创建过程,并且在我们的代码中只要做一处修改就可以了。
  我们构建了一个工厂类Product DAO Factory,对外提供create Product DAO方法,把创建ProductDAO接口对象的处理封装在该简单工厂的内部。对于ProductManager类而言,不需要再了解ProductDAO的实现细节,工厂类ProductDAOFactory统一管理ProductDAO对象的创建过程,其它类只需要调用它的createProductDAO方法即可获得ProductDAO的对象从而使用其中的方法操作数据库。工厂类与ProductDAO接口和各个实现了该接口的子类之间的关系如图1所示。
  图1 采用简单工厂模式设计UML图
  为了最大限度的提高程序的灵活性,可以将数据源的信息记录在配置文件里,根据从配置文件里读出的内容,来决定所创建的ProductDAO接口的对象实例。项目中我们使用.properties文件来管理配置信息,例如,添加“DateBase=MySQL”至sysconfig.properties文件,接下来,给出简单工厂ProductDAOFactory类的关键部分实现代码如下。
  //创建ProductDAOFactory对象
  if(pdFactory == null) {
  pdFactory = new ProductDAOFactory();
  }
  //从sysconfig.properties读取DataBase的值,结果存放在字符串变量strDB中
  if(strDB.equals(“MySQL”)) {
  productDAO = new ProductMySQLDAO();
  }
  else if (strDB.equals(“SQLSERVER”)) {
  productDAO = new ProductSQLServerDAO();
  }
  //else根据DataBase的值创建不同的实现了ProductDAO接口的对象
  在简单工厂类ProductDAOFactory的代码实现中,我们把实例化简单工厂对象和ProductDAO对象的过程放在静态语句块中,即在ProductDAOFactory类被加载的时候就完成了对象的创建,从而使得创建对象的代码不用每次调用工厂类的时候都执行一遍。
  3 结束语
  本文以网上购物系统中的产品管理模块的设计与实现为例,讨论了设计模式在软件开发过程中的应用,展示了设计模式在面向对象的程序设计中的重要作用。针对产品管理模块中提供对各种数据库系统的支持这一具体问题,提出了简单工厂模式这一设计思路并给出了具体解决方案。通过工厂模式的应用,使系统的结构更加合理,开发效率显著提高,尤其是系统的可扩展性、可维护性大大的增强。如今,各种设计模式已经在软件产品的设计与开发过程中得到越来越广泛的应用。
  参考文献:
  [1]徐宏喆,侯迪.使用软件设计模式教程[M].北京:清华大学出版社,2009:103-112.
  [2]耿祥义,郝丽.JAVA设计模式在视频监控系统软件设计中的应用[J].电脑知识与技术,2010,6(30):8490-8492.
  [3]秦澎涛,王苏文.简单工厂模式在数据访问层中的应用[J].计算机应用技术,2009,30(7):1799-1801.
  作者简介:冯贺(1982.08-),男,河南省安阳县人,教师,助教,硕士研究生,研究方向:信息技术、数据挖掘。
其他文献
当前,国内水电安装市场受发展层次差异大、企业规模差距大、业务专业性较强等因素的影响,相关企业的持续发展压力颇大。而财务管理系统是企业的核心系统之一,财务的良性运行
延续(Continuation)是一种函数式编程技术:它能记录线程当前的运行状态,并允许在随后暂停和恢复。许多Web应用框架,包括RIFE和WebWork都整合了延续技术。其中,RIFE中颇具创造性的特
目的 探讨艾司西酞普兰合并奥氮平治疗老年抑郁症的疗效和安全性。方法 将我院住院治疗48例老年抑郁症患者随机分为两组,研究组(艾司西酞普兰合并奥氮平)和对照组(单用艾司西酞
如何应对当前人类生存发展面临的重大挑战,中国作为负责任的发展中的大国,提出创建亚欧、亚非经济发展带,以此推动全球经济发展的"一带一路"理念。中国作为"一带一路"发起国,积极
电子商务是买卖双方基于互联网这个平台进行商务交易的一种活动。尽管我国电子商务市场潜力巨大,但是在整体上与发达国家还存在一定的差距。目前,我国电子商务在网络安全、网
目前,大部分有色金属企业已经普遍参与期货市场,并将期货作为锁定利润、规避风险、稳定生产经营等不可或缺的工具。然而,一些国有企业进行套期保值并没有达到预期的效果,有些
作为自由软件之父,Richard Stallman的观点犀利。很明显,在自由软件的理念之下,Richard并不喜欢云计算,他更相信将软件运行在自己的PC机和服务器上,以避免“将您自己置于别人的砧
在区位优势及政策鼓励背景下,广西经济发展迅速并具有区域性的特点.社会的进步及行业的规范,使广西区内高层次会计人员匮乏的问题越来越突出.广西自主培养的MPAcc人才作为优
在可视化数据库编程中,大部分的书本都是从数据库、表、字段等着手开始讲述具体的内容,本文则通过一个实际的项目“驾考考试模拟软件”的开发过程,从一个开发者的角度一步一步地
本文介绍了7号信令系统的分层结构,描述了信号链路测试消息和信号链路证实消息的信号单元,提出了信号链路测试的程序设计流程及模块设计方法,给出了T1和T2定时器超时处理模块