从三层结构到抽象工厂模式的软件设计

来源 :中小企业管理与科技·上旬 | 被引量 : 0次 | 上传用户:puhongjin
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:三层结构作为一种更加普适的架构设计理念,具有分散关注、松散耦合、逻辑复用、标准定义优点。工厂方法模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,在数据库连接中有广泛的应用。本文通过一个简单的实例详细介绍三层结构到抽象工厂的软件设计过程。
  关键词:三层结构 抽象工厂 设计模式
  
  首先先准备好一层用户登陆窗体的代码,即不采用分层实现的代码,在一层的基础上实现两层,再在两层的基础上实现三层,最后引入Model层。对于一层用户登陆功能,如下图所示:
  在这个层的代码中提取方法,具体操作是选中代码,右键选择重构下的提取方法,这里注意不要选择用户名和用户密码,这里我们就提取到了有两个参数的方法。我们不能发现选择的代码都是针对数据操作的,为了更好的重复使用这段代码,我们一般把它放到哪里呢,引出数据访问层DAL。这里在VS2005中演示代码,填写新的类库,即数据访问层类库(DAL),将刚刚提取的方法从表示层剪切到DAL中。再在表示层添加对DAL层的引用,在按钮的Click事件中调用这个方法,我们就实现了从一层到两层的转变,从而实现了最简单的两层结构。
  在实际的开发中,具体项目的业务逻辑往往比较复杂,需要写一些方法实现这些复杂的逻辑,为了重用这些代码,我们把它放到表示层和数据访问层中间,称为业务逻辑层。下面在前面代码的基础上演示三层的实现,首先添加一个新的类库即业务逻辑层BLL,然后在BLL层添加具体的方法,引用DAL层的方法,最后在表示层中首先删除对数据访问层的引用,再添加BLL层的引用,更改按钮的Click的代码为引用BLL层的方法。这样三层结构就实现了。
  上面的代码我们实现的判断登陆的用户名称和密码是否正确,是一个查询功能,查询传递两个参数这么实现是可以的,但是我们往往需要对大批量的数据进行添加和修改操作,如用户信息的注册,注册的信息可能有十几项,你如何在层与层直接传递数据呢,显然使用带十几个参数的方法是比较麻烦的,在这里我们使用类的属性来传递,每次传递一个对象,这里我们称之为Model层。具体的实现方法添加新的类库,建立实体类,再依次将需要传递的参数作为属性添加到实体类中。最后添加引用,因为作为数据传递,所以每个层多要引入Model层。上述过程如图二所示:
  三层结构可以让开发人员可以只关注整个结构中的其中某一层; 可以很容易的用新的实现来替换原有层次的实现;可以降低层与层之间的依赖;有利于标准化;利于各层逻辑的复用。
  其次介绍接口和简单工厂,为什么要使用接口呢,现在的软件产品不可能指针对一个数据库,如劳资管理系统,大公司使用SQL Server,小公司可能使用Access就够用了,那么如何让一套程序既可使用SQL Server又可使用Access作为数据库呢,答案是我们在数据访问层使用统一的接口,让访问SQL Server和Access的类都实现这个接口,然后通过接口调用具体的实现。具体的演示方法是在前面代码的基础上点击DAL层的类,右键选择重构,选择提取接口,这样一个接口就出现了。如下图所示:
  我们这里为了更加的规范,建立一个接口层的类库IDAL,将这个接口移到这个类库IDAL中。接口建立以后,为了可以使用Access库,我们添加新的数据层AccessDAL,再添加一个AccessUserDAL类并实现现刚刚创建的接口。为了方便你可以复制上面的代码和SqlHelp到AccessDAL类库中,然后将这个类库下的“Sql”替换成“OleDb”。这里注意SqlHelp里的代码也要替换成访问Oledb的。最后修改BLL层的调用方式为接口调用,用接口隐示的声明,用类显示的实现调用,对于访问SQLServer数据库具体的代码是:ISqlUserDAL dal = new Demo.DAL.SqlUserDAL();如果需要访问Access库,稍加改动就变成访问Access库,具体代码是:ISqlUserDAL dal = new Demo.AccessDAL.AccessUserDAL();
  接口就可以实现访问不同的数据库我们为什么采用工厂模式呢,原因有两个,第一是客户提出新需求,自己不改变源码就更换为其他数据库;第二是从开发公司考虑,为了适应不同的数据库,每次需要修改BLL层源代码,再编译程序,发布程序比较麻烦。那么具体实现步骤是创建新的工厂项目类,添加类SimpleFactory,然后在类中实现返回实现产品接口的方法,通过Web.Config读取配置数据,针对不同数据库,返回不同实现接口的对象,最后修改BLL层的调用方式为简单工厂调用,用接口隐示声明,但是实现通过工厂创建,代码如下:private static IUserInfo db = SimpleFactory.CreateDalUserInfoInstance();这样我们就可以通过修改配置文件实现不同数据库的访问,实现了简单工厂的设计模式。
  再其次引入抽象工厂的实现,有了简单工厂,为什么还要使用抽象工厂呢,原因是一个大的软件项目中包括很多的模块,不同的模块就要创建不同的接口,那么如何返回很多实现接口的对象呢,在简单工厂模式中只能编写多块相似的代码,通过判断数据库的类型返回具体的对象,这样就造成大量的代码冗余,这里采用优化的方法,即抽象公共的部分,通过抽象类调用具体的实现类,可以产生一批有关联的产品,例如通过配置文件读取是Access数据库类型,那么得到是Access的工厂,工厂里的产品都是通过访问Access数据库数据产生的产品。可以说对于简单工厂模式一次只能创建一个对象,而对于抽象工厂模式实现一次创建一系列相互依赖对象的需求。
  具体的演示实现步骤是首先通过修改前面的编写的简单工厂simpleFactory类为抽象工厂类,添加相应的抽象方法,通过读取对应的配置文件,返回实现抽象类的工厂;然后创建一个具体工厂类SQLFactory继承这个抽象工厂类,重写抽象方法,只返回具体SQLServer库的实现;最后创建新的Access具体工厂类,添加类AccessFactory,让它也继承抽象工厂类,重写抽象方法。另外不要忘记修改BLL层的调用方式为抽象工厂调用,具体的代码是先得到一个工厂,然后再得到相应产品。具体的代码是:
   private static AbsDALFactory factory = AbsDALFactory.ChooseFactory();
   private static IUserInfo db = factory.CreateDalUserInfoInstance();
  這样我们就将数据访问层的内容进行了细化,首先引入接口,再使用简单工厂,然后引入抽象工厂模式,具体的思路如下图三所示:
  抽象工厂的使用除了对多系列多类别的应用外,还有一点很重要的原则,即它的一系列的产品总是在一起使用的,只有这样才更能体现出抽象工厂的价值。
  结语:从三层结构到抽象工厂是一种典型的软件设计思路,他们是一个优秀的实践标准,但它并不是一个通用的东西,只有满足我们需求和变化的设计才是好设计,而那一刻,无论是设计原则,还是设计模式,都融入我们的心中,而变得空旷起来,一个真正优秀的软件设计人员,他们不会去套用每一个模式,他们在心中都会有自己的一套设计策略,这才谓之无刀胜有刀。
  参考文献:
  [1]华铨平,抽象工厂设计模式在3层结构开发中的应用,大庆石油学院学报第33卷第3期2009年6月.
  [2]魏一搏,抽象工厂模式在.net数据访问层中的应用.信息系统工程, 2010年第2期.
  [3]王德永,抽象工厂模式在多种数据库访问程序中的应用,机电产品开发与创新.2009年第6期.
  作者简介:王善桃(1968-),男,江苏金湖人,东南大学工程硕士,江苏财经职业技术学院讲师,主要研究方向软件开发。
其他文献
本文通过水工混凝土的特点,说明水工混凝土裂缝的类型、产生原因及危害,从材料方面,结构方面,施工方面,综合管理方面提出混凝土温度防裂措施。
走产学研结合发展之路是国家对高职院校办学方向的科学定位。产学研合作对于高职的发展具有很强的现实意义。本文对高职教育的产学研发展意义以及模式进行了探讨,以利于应对
企业的薪酬和福利制度好坏将直接影响整个企业的效益,因此对于一个优秀的企业而言,制定合理的薪酬和福利制度是必要也是必须的。薪酬制度对于企业来说是一把“双刃剑”,使用得当
电力网电能损失率(简称线损率)是电力企业的一项重要综合性技术经济指标,它是国家考核电力部门电能损耗水平的一项重要技术经济指标,也是电力系统规划设计、生产运行、经营管理
摘要:随着银行业信息化的发展,建设银行在IT方面进行了大规模的资源整合,信息时代出现的银行内部专业化软件组织,工作模式和管理方式都有一些别于传统的新特点。因此对建设银行进行软件项目管理十分必要,文章通过分析建设银行软件项目管理的现状,提出了建设银行软件项目管理的具体策略。  关键词:建设银行 软件 项目管理    1 软件项目管理  软件项目管理就是软件项目经理利用现有的资源,运用一定方法,有效组
摘要:国有运输企业要以调整和优化产权结构为重点,大力发展股份制经济。当前要加快国有企业股份制改革的步伐,通过控股、战略投资者参股和经营者、员工持股,走投资多元化的道路。  关键词:创新 运输企业    1 运输企业创新发展的趋势和特点  近年来,随着我国经济的快速发展,道路运输业的综合运输体系基本形成,为公路运输发展创造了有利条件。研究公路运输企业创新发展的思路与方法,及时调整自己的发展战略,是当
本文从工程咨询的作用、工程咨询企业竞争力评价、提高工程咨询企业竞争力的措施等三个方面探讨了如何使一个工程咨询企业保持持久的竞争优势。
2008年12月31日,中共中央、国务院出台《关于2009年促进农业稳定发展农民持续增收的若干意见》,这是自2004年以来中央1号文件连续6年锁定“三农”,同时,也是连续6年将农业保险列
自辽宁省2003年开展“村村通油路”工程以来,本人参与了鞍山市千山区农村公路建设的施工、设计、管理等工作,对公路施工企业在农村公路建设成本的控制方面,有了一些初浅的认识。
本工程为攀成钢炼钢总厂新建五机五流设备基础:主要包括大包回转台、连铸机等设备基础。