原型模式
简介
: 原型是一种创建型设计模式, 使你能够复制对象, 甚至是复杂对象, 而又无需使代码依赖它们所属的类。
人话
: 就是类自己实现一个clone方法, 能够返回一个属性和自己一样的实例, 从而让客户不用知道创建的细节就能够创建出实例
不要人云亦云
一些博客的观点
性能优良,原型模式是在内存二进制流
的拷贝
,当new的对象比较复杂的时候,要比直接new一个对象性能好很多
,特别是在一个循环体内产生大量的对象时,原型模式可以更好的体现其优点。
but
我看这些博客里写的不过是写一个clone方法, 然后new 一个对象 return
这就敢说是"内存二进制流的拷贝", 就敢说减少了大量的构造方法的调用? 不是胡说么
还是希望大家写博客时, 能够脚踏实地, 不要人云亦云
举个例子
游戏系统中, 一个游戏角色释放了分身技能, 那么代码中我们也给他设置一个克隆实例
代码
cpp
class GameObject
{
private:
int hp, mp;
public:
GameObject() {};
GameObject(int h, int m) : hp(h), mp(m) {};
void display()
{
cout << this << endl;
cout << "hp : " << hp << " ; mp : " << mp << endl;
}
GameObject* clone()
{
GameObject* g = new GameObject(hp, mp);
return g;
}
};
int main()
{
GameObject* g = new GameObject(100, 100);
g->display();
GameObject* g2 = g->clone();
g2->display();
return 0;
}
执行结果