简介
原型模式通过对已有对象进行复制来创建新的对象,主要是通过拷贝构造函数来实现。其类结构图也比较简单,拷贝构造函数来确定clone的时候是深拷贝还是浅拷贝。在java的基类Object中,就包含clone方法。
UML类图
示例
现在很多产品都是标准化的,很多时候我们都是先制造一个产品的模型(原型),然后根据这个原型去复制。
产品类,product.h
#ifndef PRODUCT_H
#define PRODUCT_H
#include <string>
using namespace std;
class CProduct
{
public:
virtual CProduct* clone() = 0;
};
class CConcretProduct:public CProduct
{
public:
CConcretProduct(){};
CConcretProduct(const CConcretProduct& product)
{
this->m_strName= product.m_strName;
}
CProduct* clone()
{
return new CConcretProduct(*this);
}
private:
string m_strName;
};
#endif
客户端调用,main.cpp
#include "product.h"
#define SAFE_DELETE(p) if(p){delete (p); (p) = NULL;}
int main(int argc, char* argv[])
{
CProduct* pProduct = new CConcretProduct;
CProduct* pCloneProduct = pProduct->clone();
SAFE_DELETE(pCloneProduct);
SAFE_DELETE(pProduct);
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。