问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

设计模式(c++)笔记之一(Factory Method工厂方法模式)

发布网友 发布时间:2024-10-21 19:52

我来回答

1个回答

热心网友 时间:2024-10-29 23:17

工厂方法模式的意义在于定义一个创建产品对象的工厂接口,并推迟实际创建工作至子类中。核心工厂类不再负责产品的创建,转而成为抽象工厂角色,仅负责具体工厂子类必须实现的接口。这种抽象化的好处是使得系统在不修改具体工厂角色的情况下,可以引进新的产品。

通常使用Factory模式来解决问题。在第一个问题中,我们经常声明一个创建对象的接口,并封装对象的创建过程。Factory在此类似于一个真正意义上的工厂。在第二个问题中,我们需要提供一个对象创建对象的接口,并在子类中提供具体实现,因为只有在子类中才能决定实例化哪一个类。

第一种情况的Factory结构示意图为图1。所以的Factory模式经常在系统开发中使用,但这并非Factory模式的最大威力所在。Factory模式不仅提供了创建对象的接口,更重要的是延迟了子类的实例化。以下是这种情况的一个Factory结构示意图:图2。Factory模式的应用并非只是为了封装对象的创建,而是要把对象的创建放到子类中实现:Factory中只是提供了对象创建的接口,其实现将放在Factory的子类ConcreteFactory中进行。这是图2和图1的区别所在。

实例描述:女娲补天的故事大家都听说过吧,今天不说这个,说女娲创造人的故事。女娲在补了天后,下到凡间一看,哇塞,风景太优美了,天空是湛蓝的,水是清澈的,空气是清新的,太美丽了,然后就待时间长了就有点寂寞了,没有动物,这些看的到都是静态的东西呀,怎么办?别忘了是神仙呀,没有办不到的事情,于是女娲就架起了八卦炉(技术术语:建立工厂)开始创建人,具体过程是这样的:先是泥巴捏,然后放八卦炉里烤,再扔到地上成长,但是意外总是会产生的:第一次烤泥人,兹兹兹兹~~,感觉应该熟了,往地上一扔,biu~,一个白人诞生了,没烤熟!第二次烤泥人,兹兹兹兹兹兹兹兹~~,上次都没烤熟,这次多烤会儿,往地上一扔,嘿,熟过头了,黑人哪!第三次烤泥人,兹~兹~兹~,一边烤一边看着,嘿,正正好,Perfect!优品,*人类!这个过程还是比较有意思的,先看看类图:

我的工程目录:

注释:main(),女娲 IHuman,产品接口 CYellowHuman,产品之一 CWhiteHuman,产品之二 CBlackHuman,产品之三 IHumanFactory,工厂接口 CYellowHumanFactory,工厂之一 CWhiteHumanFactory,工厂之二 CBlackHumanFactory,工厂之三

产品接口类IHuman IHuman.h

黄种人类YellowHuman YellowHuman.h

YellowHuman.cpp

白种人类WhiteHuman WhiteHuman.h

WhiteHuman.cpp

黑种人BlackHuman BlackHuman.h

BlackHuman.cpp

工厂接口IHumanFactory IHumanFactory.h

创造黄种人工厂类YellowHumanFactory YellowHumanFactory.h

YellowHumanFactory.cpp

创造白种人工厂类WhiteHumanFactory.h WhiteHumanFactory.h

WhiteHumanFactory.cpp

创造黑种人工厂类BlackHumanFactory BlackHumanFactory.h

BlackHumanFactory.cpp

主类main.cpp

结果如下:

参考文献:《设计模式之禅》,《GoF_23种设计模式解析》
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cf手游体验服4月资格申请问题答案大全_2021年4月cf手游体验服资格申请... 2024.03-2024.04排位赛季历程的名字是 cf手游4月体验服答题第10题... 如何区别男人的早泄和阳痿 早泄与阳痿的关系 串联谐振原理下,试品电压如何达到试验值? 想自己做一个网站,但需要备案,自己可以注册一个企业吗 WPS Office中怎么创建企业 创建企业的详细操作教程分享 李小冉冻龄,素颜肌肤让网友不淡定,这颜值太绝了,你羡慕了吗? 怀孕能用酒精擦脚吗 朋友圈评论怎么删除_朋友圈评论删除功能介绍 成都哪里适合耍半天,最近成都景点旅游推荐 没有医院的死亡确诊,村委会开具死亡证明,我可以去法院起诉村委会吗... 为何联合发起演员单剧片酬声明? 想开发游戏, 学计算机科学与技术好还是软件工程好 宣泄心中悲愤的古诗句 1.2.3.5.8.13.21...从第三项开始每一项都是前两玩项的和,此数列的第2... 以21.75为月计薪天数,而不是用20.83为月记薪天数,是不是就说明了... 0.108108循环小数点后面前100位上的数字之和是多少? 怎样快速提高快手亲密度? 快手红利计划是什么活动?怎么玩? 绵阳的私立小学哪几所最好? 绵阳哪个小学最好 求一篇情感类的摘记,600字左右。 心灵的深处400字 ...后面第1001个数字是多少?这1000个数字的和是多少? 计算25÷37小数点后面的第2020数位式是什么? 计算25÷37时,小数点后面的钱2020位数字之和是多少? 太马社区属于哪里 会宁县三房吴镇有几个队 我的电脑分辨率本来是1280:1024,因为工作需要改成1600:1200分辨后... ...上买了鞋子,结果回来后发现尺码不合适。申请换货之后就一直是这个样... ...码字不合适,想要换货,但此时鞋子的价格涨了,就是活动过了,价格不就... ...双鞋子,收到货后,感觉是有人穿过了,跟卖家说换货,卖家答应了,寄过去... 恐龙的爱情银行创始人 宫业龙如何从艺术领域转入创办爱情银行并获得成功? 考研英语的时间应该如何分配 取保候审最长多久撤案 警察跨省办案取保候审多久 微信视频通话提示对方忙是怎么回事? x1=-1/3,x2是x1的差到数,则x4是x3的差倒数,...,依次类推x2013=多少... 若y1=1/3,y2是y1的差倒数依次类推,则y2012 ...分之1称为x的差倒数,如2的差倒数是1-2分之1=-1,-1的差倒数为1-(-1... 【急】已知x1=-3/2,x2是x1的差倒数,x3是x2的差倒数,x4是x3的差倒数... 如何有效的消除脸部的痘坑? ...a称为a的差倒数,如2的差倒数是1/1-2=-1,-1的差倒数 潍柴380马力启动后哒哒哒哒响是油泵的问题吗? 请问艾叶生姜红花分别怎么泡? 孩子9岁,右小指第二关 节弯曲变形,以前没有说疼,现在写作业多了说疼... 主动脉夹层b型保守治疗 22岁了还没有初恋过,正常吗?