设计模式 之 《原型模式》

 

GOOD:从一个对象再创建另外一个可定制的对象,而无需知道任何创建的细节。并能提高创建的性能。 

说白了就COPY技术,把一个对象完整的COPY出一份。

 

#ifndef __PROTOTYPE_MODEL__
#define __PROTOTYPE_MODEL__

#include <iostream>
#include <string>
using namespace std;

class Prototype
{
private:
    string m_strName;

public:
    Prototype(string strName){ m_strName = strName; }
    Prototype(){ m_strName = ""; }
    void show(){ cout<<m_strName<<endl; }

    virtual Prototype* clone() = 0;
};

// class ConcretePrototype1 
class ConcretePrototype1 : public Prototype
{
public:
    ConcretePrototype1(string strName) : Prototype(strName){}
    ConcretePrototype1(){}

    virtual Prototype* clone()
    {
        ConcretePrototype1* p = new ConcretePrototype1();
        *p = *this;      //复制对象
        return p;
    }
};

// class ConcretePrototype2 
class ConcretePrototype2 : public Prototype
{
public:
    ConcretePrototype2(string strName) : Prototype(strName){}
    ConcretePrototype2(){}

    virtual Prototype* clone()
    {
        ConcretePrototype2* p = new ConcretePrototype2();
        *p = *this;      //复制对象
        return p;
    }
};

#endif //__PROTOTYPE_MODEL__

/* 《客户端》
#include "PrototypeModel.h"

int _tmain(int argc, _TCHAR* argv[])
{
    ConcretePrototype1* test = new ConcretePrototype1("小王");
    ConcretePrototype2* test2 = (ConcretePrototype2*)test->clone();
    test->show();
    test2->show();

    return 0;
}
*/

 

posted @ 2013-10-31 00:23  解放1949  阅读(134)  评论(0编辑  收藏  举报