/* 小魚號(hào)的代碼日志
* 設(shè)計(jì)模式
* 原型模式
* 用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且
* 通過拷貝這些原型,創(chuàng)建新的對(duì)象
* 一個(gè)對(duì)象在創(chuàng)建另外一個(gè)可定制的對(duì)象
* 無需知道創(chuàng)建的細(xì)節(jié)
* 克隆羊
*/
#include<iostream>
#include<list>
using namespace std;
class Animal
{
public:
Animal(string name,int age)
{
m_name = name;
m_age = age;
}
Animal(const Animal& animal)
{
m_name = animal.m_name;
m_age = animal.m_age;
}
void showInfo()
{
cout << "name:" << m_name << " age:" << m_age << endl;
}
virtual Animal* clone() = 0;
protected:
string m_name;
int m_age;
};
class Sheep:public Animal
{
public:
Sheep(string name,int age) :Animal(name,age)
{
}
Sheep(const Sheep& animal) :Animal(animal)
{
}
Animal* clone()
{
return new Sheep(*this);
}
};
void testPrototype()
{
cout << "prorotype patterns" << endl;
Animal* sheep = new Sheep("tom",12);
sheep->showInfo();
Animal* cloneSheep = sheep->clone();
cloneSheep->showInfo();
}
【C++設(shè)計(jì)模式】原型模式 淺拷貝
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 簡(jiǎn)介 所謂原型模式就是用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過復(fù)制這些原型創(chuàng)建新的對(duì)象。舉一個(gè)簡(jiǎn)單的例子,一個(gè)人想要...
- “對(duì)象創(chuàng)建”模式 通過“對(duì)象創(chuàng)建”模式繞開直接new一個(gè)具體的類型,來避免對(duì)象創(chuàng)建(new)過程中所導(dǎo)致的緊耦合(...
- 原型模式:一種創(chuàng)建型設(shè)計(jì)模式 應(yīng)用場(chǎng)景:一個(gè)基類,有很多派生類,在實(shí)際開發(fā)中,經(jīng)常會(huì)使用一個(gè)基類指針,將其指向不同...