設計模式 之 《原型模式》

 

GOOD:從一個對象再建立另一個可定製的對象,而無需知道任何建立的細節。並能提升建立的性能。 ios

說白了就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;
}
*/
相關文章
相關標籤/搜索