情景分析
现在电子账单越来越流行了,比如你的信用卡,每到月初的时候银行就会发一份电子邮件给你,说你这个月消费了多少,什么时候消费的,积分是多少等,这是每个月发一次 . 还有一种也是银行发的邮件你肯定非常有印象:广告信,现在各大银行的信用卡部门]都在拉拢客户,电子邮件是一种廉价、快捷的通信方式,比如我行今天推出一个信用卡刷卡抽奖活动,通过电子账单系统可以一个晚上发送给600万客户 . 但是这是一个线程在运行 , 是有时间消耗的 , 按照0.02秒一封 , 600万封邮件需要33小时 , 一整天也发送不完 , 如果改成多线程 , 又会产生线程安全的问题 , 有N多种解决问题的办法 , 其中的一种就算是使用原型模式 , 通过对象的复制功能来解决这个问题 .
原型模式的定义
定义 : 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 .
注意 : 其中有一个词很重要,那就是拷贝 . 可以说,拷贝是原型模式的精髓所在 .
原型模式的通用类图 :
原型模式的核心是一个clone()方法 , 对于C++来说,其实就是拷贝构造函数,需实现深拷贝,下面给出一种实现.
代码如下 :
#include<iostream>
#include<string>
//#include<vld.h>
using namespace std;
//原型模式
#if 0
class Mail
{
public:
//构造函数
Mail()
{
contxt = "国庆抽奖活动通知 : 只要刷卡就送你一百万!...";
subject = "XX银行国庆信用卡抽奖活动";
}
string getReceiver()
{
return recviver;
}
void setReceiver(string _rec)