设计模式 c++版(7)——原型模式

本文详细介绍了C++中的原型模式,通过示例展示了如何使用原型模式创建和复制对象,特别是在个性化电子账单和多线程发送邮件场景中的应用。讨论了模式的优点,如性能提升和避免构造函数约束,并给出了适用场景及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义:

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。


示例一:原型模式(通用版)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值