定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
示例一:原型模式(通用版)
1. 类图13-3
2. 代码清单13-3:
class PrototypeClass;
class Cloneable
{
public:
virtual PrototypeClass clone() = 0;
};
class PrototypeClass:public Cloneable
{
public:
virtual PrototypeClass clone()
{
PrototypeClass proto;
//copy
return proto;
}
};
示例二:个性化电子账单
1. 需求说明:
银行发送电子账单的邮件一般是有要求的:
①个性化服务:发过去的邮件上总有一些个人信息,比如姓氏等。
②递送成功率:若大批量地发送邮件会被收房邮件服务器误认为是垃圾邮件,因此在邮件头要增加一些伪造数据,以规避被反垃圾邮件引擎误认为是垃圾邮件
从这两方面考虑,电子账单系统(电子账单系统一般包括:账单分析、账单生成器、广告信管理、发送队列管理、发送机、退信处理、报表管理等)的一个子功能,现在考虑一下广告新这个模块如何开发。既然是广告信,肯定需要一个模板,然后再从数据库中把客户的信息一个一个地取出,放到模板中生成一份完整的邮件,然后扔给发送机进行发送处理
2. 类图13-1

3. 类图说明
AdvTemplate 是广告信的模板,一般都是从数据库取出,生成一个BO或是DTO,我们这里使用一个惊天的值来代表
Mail 类是一封邮件类,发送机发送的就是这个类
4. 代码清单13-1:
********** 1. 发送电子账单,代码清单13-1:***************//
class AdvTemplate
{
public:
AdvTemplate()
{
this->m_advSubject = "The National Day lottery";
this->m_advContext = "***********";
}
QString getAdvSubje