一种基于泛型的建造者模式实现方法

来源 :科学与财富 | 被引量 : 0次 | 上传用户:gb1107
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文阐述了设计模式的定义及基本要素,分析了建造者模式的结构、动机与目的,对比基于继承与虚函数的实现,提出了一种基于泛型的实现方法及代码。最后讨论了该实现方法的优缺点。
  关键词:设计模式; 泛型; 静多态; 动多态; 建造者模式; 模板
  1 引言
  设计模式是对于某一类的软件设计问题的可重用的解决方案。[1]在软件开发中,其主要作用为:重用设计、共用词汇、方便交流、易于重构。一个模式有四个基本要素:1)模式名称,用于描述模式的问题、解决方案和效果;2)问题 用于解释设计问题和问题存在的前因后果;3)解决方案 描述设计的组成部分、相互关系及其各种的职责和协作方式;4)效果 描述模式应用的效果和使用模式应权衡的问题。[2]设计模式主要分为创建型、结构型、行为型,建造者模式是结构型模式之一,其意图是“将抽象化与实现脱耦,使得二者可以独立变化”。
  在面向对象程序设计中,封装变化最主要的技术是多态。多态是同一实体同时具有多种形式,即同一操作作用于不同的对象,产生不同的执行结果。多态分为动多态、静多态。动多态是通过继承和虚函数来实现的,在运行期间,虚函数调用不同子类型的虚成员函数以实现不同的功能。静多态是通过泛型中模板实现的,在编译期间,接口绑定不同的功能代码。
  当前,设计模式的实现技术是使用动多态,即继承与虚函数(接口与实现)。其主要的问题是,接口必须在公共基类中预先设定,动多态的绑定是入侵性的或者插入式的。针对这一问题,本文以建造者模式为例,使用静多态给出非入侵性或非插入式的实现。
  2 建造者模式
  建造者模式是对象的创建型模式,其动机是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。此方法不够灵活,继承机制将抽象部分与实现部分固定在一起,难以对抽象部分和实现部分独立进行修改、扩充和重用。为解决上述问题,可使用建造者模式。
  建造者模式结构图如图1,[3]其参与者分别为:Builder为创建一个Product对象的各个部件指定抽象接口;ConcreteBuilder实现Builder的接口以构造和装配该产品的各个部件;Director构造一个使用Builder接口的对象;Product表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义其装配过程,包含定义组成部件的类及其最终产品的接口。对象协作中,客户创建Director对象,并对Builder对象进行配置。
  3 泛型与模板
  泛型是现代程序设计语言的一种特性。泛型是一种特殊的类型,其将指定类型的工作延迟到客户端代码声明并实例化类或方法的时候,泛型将类型参数化以达到代码复用的目的,从而提高软件开发工作效率。
  不同的语言支持的泛型的特性不同。.NET泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作其所存储的对象的类型的占位符;类型参数作为其字段的类型及其方法的参数类型出现。泛型方法可以将其类型参数用作其返回值的类型或者其某个形参的类型。?Java 泛型的参数只代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java?编译器在编译泛型时会自动加入类型转换的编码,因此其运行速度不会因为使用泛型而加快。[4]在C++ 中,泛型即模板,其无法对泛型的类型参数进行约束,在编译时,每个使用的封闭泛型类型都有独立的编码产生,编译器确保其类型安全性。[5]C++模板有两种类型,函数模板与类模板。下面以C++模板为例,给出建造者模式的实现方法。
  4 泛型实现建造者模式
  基于泛型的静多态为实现设计模式提供了新方法。静多态的实现类型在编译期中确定,从而可以避免使用指针,其具备更好的类型安全性,更高的效率。下面是其实现结构图。
  图2 基于泛型的建造者模式结构图
  Class Product {
  Public:
  Void Product const;
  }
  Class ConcreteBuilder{
  Public:
  Void BuildPart() const;
  Void GetResult() const;
  }
  Template
  Class Builder{
  Private:
  T const concreteBuilder;
  Public:
  Void BuildPart() ;
  }
  Template
  Void Builder::BuildPart()
  {
  concreteBuilder.BuildPart();
  }
  在基于泛型的建造者模式實现中,由于基类变成泛型,实现了非入侵性或非插入式的绑定。同时,基于静多态的实现代码数量也减小。
  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.
其他文献
摘 要:目前我国高速列车的商业运营速度已经超过了世界最高水平,随着大规模商业运营趋势的发展以及“走出去”战略的实施,产生了大规模、大流量、跨地区等方面的需求,因此,具有自检测、自诊断、自决策能力,提供乘客个性化服务,并能实现复杂工况下高效运用和全生命周期能力保持及优化的智能化高速列车应运而生。本文大致介绍了CRH380AL型智能列车的功能需求和系统架构,并着重描述了车载数据处理中心的设计方案,对与
期刊
摘 要:目前,虚拟现实技术已经被广泛应用在各个领域,在军事领域已成为建设未来国防系统的重要手段,不仅可以提高军人的训练水平和作战能力,还能够节省人力物力。本文介绍了虚拟现实的概念、特征,并从战场环境、军事训练、武器系统设计与评估三个方面总结了其在军事上的应用。最后,就虚拟现实发展过程中出现的新的应用方向进行了展望。  关键词:虚拟现实;军事训练;武器系统  1.引言  在军事领域中,军事家们曾一直
期刊
该文论述了当代高性能军用发动机采用典型的涡轮冷气量控制系统的工作原理;计算和比较了不同冷气量对发动机节流特性的影响;并对冷量控制的相关问题进行了分析。
该文介绍了一种先进的涡轮发动机全功能数字式电子控制系统的自动备份装置方案设计,对自动备份装置的方案设计进行了论述并提出了使用条件,该装置在T800发动机上通过数字仿真研究和
摘 要:辨识机场空管运行过程中存在的风险因素,是对原有空中交通管制风险模型的进一步完善,对于确保空管运行安全具有重要的实际意义与价值。流程图应用于机场管制塔台的建设过程中可以实现对风险因素的有序排查和分析,在此基础上增加鱼刺图作为辅助力量,可以进一步强化其分析功能。鉴于此,本文主要分析基于流程图的机场管制塔台风险因素辨识方法。  关键词:流程图;机场管制塔台;风险辨识  引言:航班的稳定运行以及航
期刊
该文发展了一种分析进口畸变对多级轴流压气机影响的逐级动态响应模型。采用动态压缩系统模型和动态加载技术,建立了一种压缩系统气动稳定性分析新方法。应用新的模拟方法对—
摘 要:目前燃煤机组烟尘需达到超低排放标准,通过对各种技术路线的调研及参数对比,安徽淮南洛能发电有限责任公司2x630MW机组烟尘超低排放改造最终采用导电玻璃钢立式管式湿式电除尘器的技术路线。  关键词:湿式电除尘器;导电玻璃钢;金属极板  1 前言  安徽淮南洛能发电有限责任公司#5、#6号(2x630MW)机组现有除尘器为福建龙净环保公司生产的双室四电场静电除尘器,烟气脱硫采用石灰石-石膏湿法
期刊
摘 要:目前在线运营的CRH2型动车组恒速控制逻辑普遍使用双滞环策略,其控制功能基本可以满足平直道恒速±3km/h运行目标,但若遇到大坡道、恶劣天气等状况,则很难满足控制需求,本文根据其实际运行效果分析其特性,提出了进一步优化的控制策略。  关键词:恒速;双滞环;优化;逻辑  0 引言  CRH2型动车组已在全国范围内广泛运营,其核心部件牵引变流器主电路采用三电平整流器、三电平逆变器,牵引电机为三
期刊
摘 要:本文基于我国目前“互联网+”环境下物流发展的现状,对“互联网+”环境下物流电子商务信息服务平台进行了需求分析,指出构建“互联网+”环境下物流电子商务信息服务平台的必要性。同时进一步构建了“互联网+”环境下物流电子商务信息服务平台总体功能定位方案,进行了平台功能分析,提出了一个构建“互联网+”环境下物流电子商务信息服务平台的方案。  关键词:“互联网+”物流;电子商务  物流业是一个新兴产业
期刊
摘 要:近几年来,农产品滞销成为一个热门话题,相关话题不仅体现在农产品滞销,还有老百姓买不到新鲜、廉价果蔬的抱怨。如今的国家政策越来越贴近民生,同时网络信息传播的速度实在令人咋舌,让两者有效的结合去解决农产品滞销问题,必定会有很大的帮助。  关键词:农产品;滞销;网络  据中商情报网2015年夏国家统计局发布的最新粮食消息显示:全国夏粮播种面积已达27692.3千公顷,与2014年相比增加了近11
期刊