简介

原型模式通过对已有对象进行复制来创建新的对象,主要是通过拷贝构造函数来实现。其类结构图也比较简单,拷贝构造函数来确定clone的时候是深拷贝还是浅拷贝。在java的基类Object中,就包含clone方法。

UML类图

clipboard.png

示例

现在很多产品都是标准化的,很多时候我们都是先制造一个产品的模型(原型),然后根据这个原型去复制。
产品类,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;
}

one_piece
26 声望8 粉丝

« 上一篇
工厂方法模式
下一篇 »
单例模式