网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

c++如何实现抽象工厂

今天小编给大家分享一下c++如何实现抽象工厂的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

创新互联建站专注于高坪网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供高坪营销型网站建设,高坪网站制作、高坪网页设计、高坪网站官网定制、微信小程序开发服务,打造高坪网络公司原创品牌,更为您提供高坪网站排名全网营销落地服务。

代码示例

利用者代码:

c++如何实现抽象工厂

这段代码中创建了一个Maze对象,两个Room对象和六个Wall对象,然后建立各个对象之间的联系。

工厂基类

c++如何实现抽象工厂

测试代码

实例中通过如下代码将MazeGame,MazeFactory联系在一起。

c++如何实现抽象工厂

派生工厂

接下来是派生工厂类,本例中一共有两个:EnchantedMazeFactory和BombedMazeFactory。工厂类的类图如下:

c++如何实现抽象工厂

除了使用的工厂类不同以外,和test1完全相同。其输出结果如下:

c++如何实现抽象工厂

注意观察SetSide调用的部分。

第一次调用时接受了factory.MakeWall()构建的Wall对象,由于这个对象没有传递给其他的变量,所以wall对象的内存管理权限应该交给r1;第二次调用时传递的是aDoor对象,这个对象除了传递给r1以外,后面又传递给r2。这个aDoor的内存应该由谁来管理呢?

为了解决这个问题,需要重新考虑内存管理的策略。例如所有对象的内存都交给aMaze对象管理,其他对象之间都是参照关系。这样当然可以解决问题,但是比较繁琐也不够好玩,作者在这里采用了另外的策略:使用C++11中的shared_ptr来解决问题。

单从形式上看,作者的实现和《设计模式》示例代码有以下区别:

  1. 所有的指针都被替换为自定义类型

  2. 创建对象是使用make_shared。

这里的自定义类型就是智能指针

所有的变化都是因为使用了shared_ptr。

这样操作的结果就是大大简化了内存管理。在作者提供的这个示例中,由于内存管理全部交给shared_ptr进行,不再需要显式释放内存。

以上就是“c++如何实现抽象工厂”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。


文章名称:c++如何实现抽象工厂
网站网址:http://bjjierui.cn/article/popccs.html

其他资讯