首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

【2013.1.20】设计方式C++ 实现——ProtoType

2013-01-27 
【2013.1.20】设计模式C++ 实现——ProtoType// // // // // // // // /////2013.1.20// // // // // // // //

【2013.1.20】设计模式C++ 实现——ProtoType

// // // // // // // // //

///2013.1.20

// // // // // // // // //

还记得小的时候看哆啦A梦,

里面有一话讲到大雄用一个神奇的工具,

好像是一个灯之类的东西,

照一照点心,

点心就会自动复制到无限多(2^n)。


先不管这是不是一件让人羡慕的事情,

但是这个道具,无意间实现了我们今天所要讲的模式——Prototype。


【核心】使用复制(Clone)代替创建(new)对象。


UML图表示:

【2013.1.20】设计方式C++ 实现——ProtoType

【2013.1.20】设计方式C++ 实现——ProtoType

从表面上看,

与其说是一个模式,

倒不如说是一种复制行为更为贴切。


然而,

这其中,却隐藏着另一个难以察觉的问题。


它涉及到了对象拷贝的两种方式:

——深拷贝与浅拷贝。


在探讨这个两种拷贝方式的区别之前,

首先要提到&这个运算符:

一般情况下,

它的使用方法与指针类似(但不是相等),

&a表示的是a的引用。


一个最简单的使用方法如下所示:



【注意事项】

如上图所示,在调用copyDessert方法之后,浅克隆的数量却没有增加,但这与我们程序的原有设想是相违背的。

因此,在自己编写的类中,要记得对复制构造函数进行override,从而降低Bug发生概率。

热点排行