一、原型模式基本概念
1.作用
用原型指定创建对象的种类,并通过拷贝这些对象去创建新的对象即为每种类型对象提供一个“原型模板”,在创建同种类型对象时,直接拷贝“原型模板”。
2.适用场景
当直接创建对象的代价比较大(如类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等)和性能和安全要求比较高时,则适合采用这种模式。
二、C++伪代码实例
1.场景说明
配钥匙:
一个配钥匙的服务商,客户需要配什么钥匙,他是不知道的,但他提供这种服务,要配好钥匙,就必须先看到钥匙的“原型”才可以去配好
/*以配钥匙为例*/
/*配钥匙的商人,他只提供配钥匙的服务*/
class KEY_REPLICATOR{
virtual KEY_REPLICATOR clone() = 0;
/*其它省略.......*/
};
/*钥匙A的原型,它继承了钥匙商的配钥匙服务*/
class KEY_A_PROTOTYPE : public KEY_REPLICATOR
{
KEY_A_PROTOTYPE(){
/*初始化钥匙A原型*/
}
~KEY_A_PROTOTYPE(){
/*销毁钥匙A原型*/
}
KEY_REPLICATOR clone(){
/*配钥匙A时,复制一个钥匙A原型备份*/
/*注:这里复制构造函数省略*/
return new KEY_A_PROTOTYPE(*this);
}
/*其它省略.......*/
};
/*客户使用*/
/*创建钥匙A的原型*/
KEY_A_PROTOTYPE * key_a_prototype = new KEY_A_PROTOTYPE();
/*配一把钥匙A*/
KEY_A_PROTOTYPE * key_a1 = key_a_prototype->clone();
/*配第二把钥匙A*/
KEY_A_PROTOTYPE * key_a2 = key_a_prototype->clone();