设计模式---原型模式
2017-06-06 10:35
155 查看
原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节
浅复制,被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
深复制,把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象
#include<iostream>
using namespace std;
class Resume
{
protected:
char *m_name;
public:
virtual Resume *Clone(){return NULL;}
virtual void Show(){}
};
class Instance : public Resume
{
public:
Instance(const char *str)
{
if(str == NULL)
{
m_name = new char[1];
m_name[0] = '\0';
}
else
{
m_name = new char[strlen(str)+1];
strcpy(m_name,str);
}
}
Instance(const Instance &r)
{
m_name = new char [strlen(r.m_name)+1];
strcpy(m_name,r.m_name);
}
Instance* Clone()
{
return new Instance(*this);
}
void Show()
{
cout<<"instance name "<<m_name<<endl;
}
};
int main()
{
Resume *r1 = new Instance("A");
Resume *r3 = r1->Clone();
r1->Show();
delete r1;
r1=NULL;
r3->Show();
delete r3;
r3=NULL;
return 0;
}
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节
浅复制,被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。
深复制,把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象
#include<iostream>
using namespace std;
class Resume
{
protected:
char *m_name;
public:
virtual Resume *Clone(){return NULL;}
virtual void Show(){}
};
class Instance : public Resume
{
public:
Instance(const char *str)
{
if(str == NULL)
{
m_name = new char[1];
m_name[0] = '\0';
}
else
{
m_name = new char[strlen(str)+1];
strcpy(m_name,str);
}
}
Instance(const Instance &r)
{
m_name = new char [strlen(r.m_name)+1];
strcpy(m_name,r.m_name);
}
Instance* Clone()
{
return new Instance(*this);
}
void Show()
{
cout<<"instance name "<<m_name<<endl;
}
};
int main()
{
Resume *r1 = new Instance("A");
Resume *r3 = r1->Clone();
r1->Show();
delete r1;
r1=NULL;
r3->Show();
delete r3;
r3=NULL;
return 0;
}
相关文章推荐
- 设计模式学习笔记(六)——Prototype原型模式
- 设计模式学习笔记(四)——Prototype原型
- 设计模式就是来解决应变---原型(prototype)
- 设计模式与泡mm的关系之Prototype原型模式及原型模式的再思考
- 设计模式学习笔记(六)——Prototype原型模式
- 设计模式之Prototype(原型)
- (创建模式)设计模式之Prototype(原型)
- 设计模式原型模式(Prototype)- 面馆里的菜单
- 设计模式之Prototype原型设计模式
- 设计模式之原型法(ProtoType)----对象创建型模式
- 设计模式原型模式(Prototype)- 面馆里的菜单
- 设计模式袖珍版 连续转载之 - Prototype(原型)
- C#设计模式之原型(ProtoType)
- C#设计模式之原型(ProtoType)
- 设计模式原型模式(Prototype)- 面馆里的菜单
- 设计模式之Prototype(原型)
- C#设计模式之原型(ProtoType)
- 设计模式之Prototype(原型)
- 设计模式(3)-原型模式(Prototype)
- 设计模式(5)-原型模式(Prototype)