C++11现可变参数泛型抽象工厂.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C11现可变参数泛型抽象工厂

C++11实现可变参数泛型抽象工厂   摘 要:由于抽象工厂模式有利于达到高内聚低耦合的设计目的,因此在软件设计中得到广泛应用。但抽象工厂模式的传统实现方式在处理具体产品构造函数参数不同、异类组合、具体产品数量繁多的情况时,都显得很繁琐、很困难、复用性很低。针对这一问题,本文以抽象工厂模式为例,应用C++11新标准和泛型编程技术,提出一种C++11可变参数泛型抽象工厂的实现方式。实验结果表明,该方式比传统实现方式更为简洁高效、复用性更强,优雅地实现了对产品类型可变、参数可变、异类组合的支持。该实现方式及代码具有实用性,可应用到软件项目中。 中国论文网 /1/viewhtm  关键词:C++11;泛型;可变参数;抽象工厂;设计模式   中图分类号:TP311.1 文献标识码:A   1 引言(Introduction)   一种设计模式就是解决某一类软件设计问题的可复用的解决方案。设计模式的实现技术主要是多态,包括动多态和静多态。起先使用动多态,动多态是通过继承和虚函数实现,在运行期间,通过虚函数调用不同子类的虚成员函数来实现不同的功能。动多态的绑定是入侵性、插入式的,实现代价较高。静多态是通过模板编程实现的,通过在编译期间接口绑定不同的功能代码来实现多态。传统的静多态可以在一定程度上提供非入侵性、非插入式的实现,降低实现代价。但是,当具体产品构造函数参数不同、需要异类组合、具体产品数量繁多时,传统的动多态和静多态实现起来都很繁琐、很困难、复用性很低。   随着技术的发展,在模板编程的基础上进一步发展出泛型编程技术,并在C++标准库(STL)和实际工程中得到广泛应用[1]。针对设计模式传统实现方式存在的问题,本文以抽象工厂模式为例,通过C++11新标准泛型编程技术,给出一种可变参数泛型抽象工厂的实现方式。   2 抽象工厂模式(Abstract factory pattern)   抽象工厂模式属于创建型模式,其设计动机是:提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,用户无需指定工厂和产品的具体的类型、无需了解它们的具体实现,从而绕过常规的对象创建方式。   抽象工厂模式结构如图1所示,抽象工厂将工厂和产品全部抽象化,一个抽象工厂可以生成一组抽象产品,而一个具体工厂则生成一个系列具体产品的特定组合[2]。AbstractFactory定义抽象工厂生成的一组抽象产品的接口,AbstractProductA、AbstractProductB定义某一种抽象产品的接口;具体工厂ConcreteFactory1负责创建1系列具体产品类型ProductA1、ProductB1的组合,具体工厂ConcreteFactory2负责创建2系列具体产品类型ProductA2、ProductB2的组合,依此类推。   对象创建时,用户先创建具体工厂ConcreteFactory1或ConcreteFactory2类的对象,再用ConcreteFactory1创建1系列具体产品类型的组合,或用ConcreteFactory2创建2系列具体产品类型的组合。   3 泛型编程实现抽象工厂(Implement abstract   factory by generic programming)   抽象工厂传统实现方式的主要弱点是类型繁琐、类型依赖性强、可复用性弱。一个抽象工厂往往是为某一特定需求而设计,一般不能在其他场合复用。还有尽管抽象工厂可以将具体产品的创建委派给特定类型的工厂,但这种委派需要通过纯代码方式实现,没能充分利用语言所提供的抽象特性。   在设计模式的实现技术中,泛型编程能够提高编程效率、实现非侵入性实现,大大提高代码复用率。在泛型的参与下,许多设计可能更为精妙、更加优雅、更具扩展性[3]。面向对象编程(OOP,Object-Oriented Programming)试图将数据和方法封装在一起,各种操作都与数据类型相关。泛型编程(GP,Generic Programming)则试图将数据和方法分离开来,将类型参数化,使得同一种操作可以适用于不同数据类型,C++标准库(STL)就是一种典型应用[4]。   4 C++11实现可变参数泛型抽象工厂(Implement   variable parameter generic abstract factory by   C++11)   通过C++11新标准泛型编程技术,能够实现产品类型可变、参数可变、异类组合的泛型抽象工厂,当你需要特定类型抽象工厂时,可随时复用而无需再定义专门的抽象工厂实现。   4.1 结构图   C++11实现的可变参数泛型抽象工厂结构如图2所示,其完整实现代码附后。   具体实现非常简洁,只包含两个模板类:泛型工厂类Generic

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档