一种基于泛型的抽象工厂模式实现方法

来源 :科学与财富 | 被引量 : 0次 | 上传用户:esacjw
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文阐述了设计模式的定义及基本要素,分析了抽象工厂模式的结构、动机与目的,对比基于继承与虚函数的实现,提出了一种基于泛型的实现方法及代码。最后讨论了该实现方法的优缺点。
  关键词:设计模式;泛型;静多态;动多态;抽象工厂模式;模板
  1 引言
  设计模式是对于某一类的软件设计问题的可重用的解决方案。[1]在软件开发中,其主要作用为:重用设计、共用词汇、方便交流、易于重构。一个模式有四个基本要素:1)模式名称,用于描述模式的问题、解决方案和效果;2)问题 用于解释设计问题和问题存在的前因后果;3)解决方案 描述设计的组成部分、相互关系及其各种的职责和协作方式;4)效果 描述模式應用的效果和使用模式应权衡的问题。[2]设计模式主要分为创建型、结构型、行为型,桥梁模式是结构型模式之一,其意图是“将抽象化与实现脱耦,使得二者可以独立变化”。
  在面向对象程序设计中,封装变化最主要的技术是多态。多态是同一实体同时具有多种形式,即同一操作作用于不同的对象,产生不同的执行结果。多态分为动多态、静多态。动多态是通过继承和虚函数来实现的,在运行期间,虚函数调用不同子类型的虚成员函数以实现不同的功能。静多态是通过泛型中模板实现的,在编译期间,接口绑定不同的功能代码。
  当前,设计模式的实现技术是使用动多态,即继承与虚函数(接口与实现)。其主要的问题是,接口必须在公共基类中预先设定,动多态的绑定是入侵性的或者插入式的。针对这一问题,本文以抽象工厂模式为例,使用静多态给出非入侵性或非插入式的实现。
  2 抽象工厂模式
  抽象工厂模式是对象的结构型模式,其动机是:提供一个创建一系列相关或相互依赖对象的接口,而无需指定其具体的类。
  桥梁模式结构图如图1,[3]其参与者分别为:AbstractFactory定义创建抽象产品对象的操作接口;ConcreteFactory实现创建具体产品对象的操作;AbstractProduct定义一类产品对象的接口;ConcreteProduct为具体的产品对象。对象协作时,创建ConcreteFactory类的实例,由具体的工厂创建具有特定实现的产品对象。
  3 泛型与模板
  泛型是现代程序设计语言的一种特性。泛型是一种特殊的类型,其将指定类型的工作延迟到客户端代码声明并实例化类或方法的时候,泛型将类型参数化以达到代码复用的目的,从而提高软件开发工作效率。
  不同的语言支持的泛型的特性不同。.NET泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作其所存储的对象的类型的占位符;类型参数作为其字段的类型及其方法的参数类型出现。泛型方法可以将其类型参数用作其返回值的类型或者其某个形参的类型。 Java 泛型的参数只代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java 编译器在编译泛型时会自动加入类型转换的编码,因此其运行速度不会因为使用泛型而加快。[4]在C++ 中,泛型即模板,其无法对泛型的类型参数进行约束,在编译时,每个使用的封闭泛型类型都有独立的编码产生,编译器确保其类型安全性。[5]C++模板有两种类型,函数模板与类模板。下面以C++模板为例,给出桥梁模式的实现方法。
  4 泛型实现抽象工厂模式
  基于泛型的静多态为实现设计模式提供了新方法。静多态的实现类型在编译期中确定,从而可以避免使用指针,其具备更好的类型安全性,更高的效率。下面是其实现结构图。
  在基于泛型的抽象工厂模式实现中,由于基类变成泛型,实现了非入侵性或非插入式的绑定。同时,基于静多态的实现代码数量也减小。
  5 优点与缺点
  基于泛型的抽象工厂模式具有以下优点:1)无需通过公共基类来表达接口的共性,更便于实现内建类型的集合;2)不通过指针进行间接调用,生成的代码效率较高;3)对于提供部分接口的具体类型也可以调用;4)静多态在编译期对所有的绑定操作进行检查,具有更好的类型安全性。其缺点是:1)不能优雅地处理异类集合;2)实现代码虽小,但可执行生成代码较大;具体实现中,可根据其优缺点进行选择。
  6 结束语
  综上所述,抽象工厂模式可通过继承与虚函数实现,也可通过泛型和模板实现。不同封装变化的技术可以实现相同的功能,本文给出了抽象工厂模式基于泛型的实现方法及代码,其他模式也可通过泛型实现。
  参考文献
  [1] Gamma Erich.设计模式可复用面向对象软件的基础[M].北京:北京机械工业出版, 2000.
  [2]拉尔曼.UML 和模式应用:面向对象分析与设计导论[M].北京:北京机械工业出版社, 2001.
  [3] Shalloway Alan.设计模式解析[M].北京:中国电力出版社, 2003.
  [4] Wu T C.Java 面向对象程序设计[M].第 2 版.北京:清华大学出版社, 2002.
  [5] (美)MatthewH.Austern著,侯捷译.泛型编程与STL[M]. 中国电力出版社, 2003
  作者简介:陈辉(1973-),男,汉族,湖北武汉人,浙江商业职业技术学院,讲师,研究方向为计算机网络和软件理论。
其他文献
对外汉语是我国特有的教育专业,是对外国人士进行汉语知识教育、汉语口语技能培养的教学。它的教育内容对我国社会、文化的发展具有重要的意义。本文对对外汉语在文化交流中
<正>一、经济战略的特征 经济战略,就是关系到特定经济系统在相当长的时期内的整体发展目标及主要资源的使用方向和使用结构的决策。因此,经济战略应具有如下基本特征: (一)全面性 经济战略的本质,是解决经济系统的总体最优化发展问题,使之在千变万化的商品竞争环境中,取得全局的主动性,获得更大的发展。这里所说的主动性是指左右全局的优势,取得“先着不败’的效果。
摘 要:随着社会经济的发展,地质找矿整装勘查工作越来越受到重视,通过这一措施,可以有效地提高资源供给能力,并且对矿产资源能够进行深度整合和战略整合,极大地符合了我国矿产资源发展的需要。本文对地质找矿整装勘查工作的研究,注重分析了新形势下,矿产资源开发的新机制。  关键词:整装勘查;地质找矿;认识  前言:传统的矿产勘查工作已经无法满足当下矿产资源发展需要,加强矿产资源开发力度,使矿产资源符合当下社
股票价格与货币政策之间是否相互影响以及通过什么渠道影响的问题一直是人们关注的热点话题。本文就这个问题做出相关探讨,共分为三个部分。第一部分阐述资产价格与货币政策
摘 要:变频调速技术是一项新型的科技,它的应用能够有效地实现环保节能,因此它具有很大的发展空间。从目前来看,我国大多数领域都对其进行了相关的应用。本文主要探讨了变频调速技术在行车卷扬机电气改造中的应用。  关键词:行车卷扬机;变频调速;电气改造  在码头或者港口行车占据了很重要的地位,它是一种运用范围十分宽广的机电设备。他的正常运行保证了物流的正常运转以及工作人员和机械设备的安全。同时也确保了行车
近几年,我国增加了许多气体流量仪表生产企业,其流量计产品在出厂或使用前,必须经过计量性能测试或检定,以保证产品的质量和使用时的准确度。在气体流量检定方法中,钟罩式气体流量标准装置占据着十分重要的地位。目前国内生产的钟罩装置多采用人工操作,在检定过程中需要测得被检表前和标准装置内部的温度、压力以及标定时间、体积流量、累计流量等一系列数据,再进行计算,其工作量大、数据多。传统检定方法中同步控制由人工操
摘 要:本文就甲醇合成工艺中核心设备-甲醇合成反应器的进展做了简要的概述,通过不同类型的反应合成器举例介绍甲醇合成反应器的应用现状以及未来的发展方向。  关键词:甲醇;合成反应器;进展  甲醇是最简单的饱和脂肪一元醇,在C1化工的化工生产过程中有着十分重要的地位。其衍生物产品发展前景广阔。大约有90%的甲醇被用于化学工业,目前甲醇的深加工产品己达120多种,我国以甲醇作为原料的一次加工产品己有近3
<正> 南阳变压器厂是河南省电力变压器和农用拖车定点厂,现有干部,职工278人,固定资产305万元.1984年以来,我厂认真贯彻党的改革、开放,搞活方针,不断完善企业的内部机制,四年赚回两个厂,年年被评为地县先进企业.1987年实行承包经营后我们充分利用外部条件,不断深化企业配套改革,经济效益大幅度增长,1987年完成产值1066万元,实现税利127万元,人均税利4496万元.其主要经济指标居全省10家同行业之首,被省政府命名为省二级先进企业,我们的主要作法是:
现阶段,由于化学品泄漏造成的环境污染越来越多,这给人们生活环境及自然环境造成了极大的破坏。环境应急监测就是为了处理泄漏的化学品,也是一种防范性的工作。在环境应急检
摘 要:双进双出磨煤机是火电厂的重要辅机之一,磨煤的过程十分复杂,双进双出磨煤机故障的诊断与维修一直是制约火电厂磨煤生产效率提升的重要因素,传感技术、信息技术、网络技术等先进技术的发展和应用,对建立火电厂双进双出磨煤机故障的诊断与维修决策有着积极的意义,基于以上,本文简要介绍了火电厂双进双出磨煤机的原理和特点,对其常见的故障进行了分析,并研究了双进双出磨煤机故障诊断与维修决策。  关键词:火电厂;