原文链接:点击打开链接
功能:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象创建另外一个可定制的对象,而且不需知道任何创建的细节。
优点:
一般在初始化的信息不发生变化的情况下,克隆是最好的办法,既隐藏了对象创建细节,又提高性能。其等于是不用重新初始化对象,而是动态地获得对象运行时的状态。
缺点:
模式应用:
C++举例:
#ifndef PROTOTYPE_H
#define PROTOTYPE_H
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
class ProtoType{
private:
string m_strName;
public:
ProtoType(){m_strName="";}
ProtoType(string temp){m_strName=temp;}
void Show(){cout<<m_strName<<endl;}
virtual ProtoType* Clone()=0;
};
class ProtoTypeFirst : public ProtoType{
public:
ProtoTypeFirst(){}
ProtoTypeFirst(string temp): ProtoType(temp){}
virtual ProtoType* Clone(){
ProtoTypeFirst* p=new ProtoTypeFirst;
*p=*this;
return p;
}
};
class ProtoTypeSecond : public ProtoType{
public:
ProtoTypeSecond(){}
ProtoTypeSecond(string temp):ProtoType(temp){}
virtual ProtoType* Clone(){
ProtoTypeSecond* p=new ProtoTypeSecond;
*p=*this;
return p;
}
};
#endif
#include <iostream>
#include "prototype.h"
int main(){
ProtoTypeFirst* pExampleA=new ProtoTypeFirst("James");
ProtoTypeSecond* pExampleB=(ProtoTypeSecond*)pExampleA->Clone();
pExampleA->Show();
pExampleB->Show();
return 0;
}