[C++实现 设计模式(7)] : 原型模式

博客以银行电子账单和广告信发送问题引入原型模式。介绍其定义,强调拷贝是精髓,C++中核心是实现深拷贝的拷贝构造函数。阐述了原型模式性能优良、逃避构造函数约束的优点,以及适用于资源优化、性能和安全要求、多修改者等场景,常与工厂方法模式结合。

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

情景分析

       现在电子账单越来越流行了,比如你的信用卡,每到月初的时候银行就会发一份电子邮件给你,说你这个月消费了多少,什么时候消费的,积分是多少等,这是每个月发一次 . 还有一种也是银行发的邮件你肯定非常有印象:广告信,现在各大银行的信用卡部门]都在拉拢客户,电子邮件是一种廉价、快捷的通信方式,比如我行今天推出一个信用卡刷卡抽奖活动,通过电子账单系统可以一个晚上发送给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)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值