网站大量收购独家精品文档,联系QQ:2885784924

c++名家对话-012abstract factory, template style(C++名家对话- 012abstract厂、模板风格).doc

c++名家对话-012abstract factory, template style(C++名家对话- 012abstract厂、模板风格).doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c名家对话-012abstractfactory,templatestyle(C名家对话-012abstract厂、模板风格)

c++名家对话-012abstract factory, template style(C++名家对话- 012abstract厂、模板风格) 抽象工厂的模板风格 taodm翻译 -------------------------------------------------------------------------------- “我们知道这是什么吗我指着放在前面金属台上的设备这是在冰原下勘探到的第一批物体之一?”。 珍妮摇着头。”没呢,伙计。它可能是个奖杯,飞船推进器,儿童玩具,或就只是垃圾。上周,我们曾认为将能源系统制造出来了,供这个和其它一些设备用的,但在加入燃料后什么也没发生。随着能源的远去,技术又重回到了画图板上,但他们认为很快能搞定它..” “凭什么?” “希望。” 我瞄了一下墙上的钟。”好吧,时间差不多了。我在发抖,我很冷。每次我们要求勘探队给我们些新的东西来鼓捣时,他们总弄出些新的不同的东西。我真希望能弄明白哪怕其中任何一个。” “我希望我们对从这个artifact厂中出产的东西能知道得更多些珍妮同意。”。 “这使我回想起以前发生在我身上的一些事,在那时......” 珍妮眨着她的眼睛。”告诉为,什么时候我们可以到个暖和的地方。” -------------------------------------------------------------------------------- “坏消息,“我越过隔板向温迪嚷道。 “呒她探起头?”。 “你知道我上周写的类的吧。” “不是十分清楚,说下去。” 我没在意。”好吧我继续着,”,“我必须为它实现一个类厂建议我看一下客户群写的类厂。大师。” “嗯,于是?”突然沮丧显现在她脸上:“噢。鲍勃写的,是吧?” 我沉重地点点头。”是的,我唯一能给予他的称赞是-每当我打开他的代码,我都能学会有些事不该如何实现温迪哈哈地笑着坐回位置上。”。 我叹了口气,然后检查源码。还好,没我想象的那么坏。只不过是极大量的如果语句嵌套-我做好了坏得多的准备的。但已是够可怕的代码了,所以根据大师的忠告,我准备实现一个抽象工厂类[ 1 ]。由于没有多线程和并发的需求我决定将厂实现为单模式: 类basefactory { typedef std::auto_ptr 基地(* basecreatefn)(); typedef std::map std::string,basecreatefn fnregistry; fnregistry注册表; basefactory() { } BaseFactory(const basefactory );/ /未实现 basefactory 运算符=(const basefactory );/ /未实现 公共: 静态basefactory和instance() {静态basefactory高炉;返回高炉;} bool RegCreateFn(const std::string,BaseCreateFn); std::auto_ptr 基地创建(const std::string)const; }; 布尔basefactory::RegCreateFn(const std::string的类名,basecreatefn FN) { [名] = FN注册表; 返回true; } std::auto_ptr 基地 basefactory::创建(const std::string const类名) { std::auto_ptr 基地对象(0); FnRegistry::const_iterator regentry =注册表找到(类名); 如果(regentry! =注册。()) { 对象= regentry - second(); } 返回的对象; } 在基地的实现文件中,我加入: 命名空间 { std::auto_ptr 基地 createbase() { 返回std::auto_ptr 基地(新基地); } 布尔假= basefactory::instance()。RegCreateFn(“基地”,CreateBase); } “嗯,不错,“我思索着。”向厂注册一个函数后,生成实例就如数1、2、3那么简单” 国际main() { std::auto_ptr 基地,= basefactory::instance()创造(“基地”); } 我继续生成一个派生类,以测试通过厂来生成实例在派生类的实现中,我加入: 命名空间 { std::auto_ptr 源 createderived() { 返回std::auto_ptr 源(衍生); } 布尔假= basefactory::instance()。RegCreateFn(“源”,createder

您可能关注的文档

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档