设计模式-原型模式C++
一、简介
原型模式可以用于创建重复的对象,同时又能保证性能。原型模式是一种创建型模式,提供一种创建对象的最佳方式。
二、原型模式实例
某小学要在六一儿童节这天公布一批三好学生,需要一批奖状。我们知道,三好学生的奖状上一般除了班级姓名其他都是相同的内容。在这种情景下,学校只需要设计一张奖状原型出来,剩余奖状都可以进行拷贝和简单的变更。
这个情景就非常适合使用原型模式解决。
1)原型类-奖状类,提供克隆自己的接口clone,用于返回克隆了自身属性的新对象指针
class Cert
{
public://构造函数Cert() {}//拷贝构造函数Cert(Cert* cert){_printing = cert->_printing;_text = cert->_text;_studentName = cert->_studentName;}void SetCert(string printing, string text){_printing = printing;_text = text;}//设置学生姓名void SetStudentName(string name){_studentName = name;}void show(){cout << "这张奖状的印花:" << _printing << endl;cout << "这张奖状的文本:" << _text << endl;cout << "这张奖状发给谁:" << _studentName << endl;}//克隆接口Cert* clone(){return new Cert(*this);}private:string _printing; //印花string _text; //奖状文本string _studentName; //学生名字
};
2)使用
int main(int argc, char *argv[])
{//老师选择制作一张奖状,作为张三的奖状Cert *certA = new Cert();certA->SetCert("三好学生印花", "恭喜获得本学期三好学生,望继续努力!");certA->SetStudentName("张三");certA->show();cout << endl;//老师复制了张三的奖状,只需要把名字改成李四Cert *certB = certA->clone();certB->SetStudentName("李四");certB->show();
}
可见,certB是certA的克隆对象,除了一些定制的内容(学生姓名),其他都不需要再次调用SetCert设置奖状细节。既不容易出错,又减少了程序的复杂度,同时,由于不用反复调用填充对象的属性,提高了程序的效率。
设计模式-原型模式C++相关推荐
- 设计模式 原型模式_创新设计模式:原型模式
设计模式 原型模式 原型模式用于创建对象的副本. 这种模式非常有用,特别是当从头开始创建对象的成本很高时. 与builder , factory和abstract factory模式相比,它不会从头开 ...
- 设计模式 原型模式_设计模式:原型
设计模式 原型模式 创新设计模式之一是原型设计模式 . 尽管原型是创造模式,但它在概念上与其他模式有所区别. 我的意思是原型在某种意义上创造了自己. 我将在下面解释. 原型模式的所有魔力都基于Java ...
- 设计模式 原型模式_原型设计模式:创建另一个小车
设计模式 原型模式 创建对象确实是一个耗时的过程,也是一件昂贵的事情. 因此,我们现在正冒险节省时间和金钱. 我们该怎么做? 克隆奇迹多莉 有人记得多莉吗? 是的,是绵羊,是第一个被克隆的哺乳动物. ...
- Java常用设计模式————原型模式(一)
介绍 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型模式用于创建重复的对象,同时又能保证性能.当直接创建对象的代价比较大时,则采用 ...
- 第六章 Caché 设计模式 原型模式
文章目录 第六章 Caché 设计模式 原型模式 定义 使用场景 优点 结构图 描述 示例 初级写法 缺点 中级写法 缺点 高级写法 (浅复制) 浅复制 深复制 完整示例 简历类(复制类) 对象类(工 ...
- C++设计模式——原型模式(Prototype Pattern)
C++设计模式--原型模式(Prototype Pattern) 微信公众号:幼儿园的学霸 目录 文章目录 C++设计模式--原型模式(Prototype Pattern) 目录 定义 代码示例 普通 ...
- 设计模式---原型模式(Prototype Pattern)
在编程中有时候我们会发现,当我们需要一个实例,可是这个实例的创建过程十分复杂,在执行过程中 会消耗大量的时间,同时创建第一个实例和创建第二个时间的初始化信息并未改变.在此种情况下,直接New 一个实例 ...
- 精通python设计模式-浅谈Python设计模式 - 原型模式
声明,本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在<精通Python设计模式>中把设计模式分为三种类型: 创建型模式 ...
- [设计模式]原型模式
简介 原型模式 (Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式是一种对象创建型模式 (可参考 设计模式 创建型模式). 结构 图-原型模式结构图 Pr ...
- Java设计模式——原型模式
概述 原型模式是为了解决一些不必要的对象创建过程.当Java JDK中提供了Cloneable接口之后,原型模式就变得异常的简单了.虽然由于Cloneable的引入使用程序变得更简单了,不过还是有一些 ...
最新文章
- 【剑指offer-Java版】46求 1 + 2 + 3 + ... + n
- linux snap安装redis-desktop-manager
- 如何使用java程序操作ActiveMQ
- 教你用Python合成人像,足不出户游遍全球!
- 1562: 比较大小(思维)
- jvm加载class原理
- VS2008下QT开发环境搭建
- C++提高部分_C++普通函数与函数模板调用规则---C++语言工作笔记085
- 运算符优先级(cpp/c)
- Javashop 7.0 商城Https协议修改部分
- 趣图:秃头程序员一问二十岁
- exe文件修复,关于logo1_exe“威金”变种病毒的探讨
- 怎么调用计算机任务管理器,任务管理器怎么打开
- 微型计算机日常的应用领域,计算机的应用领域有哪些?
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java小型超市货物仓储管理系统w8wry
- NR系统概述-架构与演进
- 央行超级网银8月上线;Win7市场份额突破10%(每日关注2010.4.2)
- 单TYPE-C口 可支持快充又可传输USB2.0数据方案
- Android 面部识别之二(调用开源面部识别算法seetaface检测)
- 关于ARM Kinetis MCU唤醒源NVIC和AWIC的工作过程解惑