19原型模式

简介:  1原型模式的核心内容是: A:使用一个clone方法复制自己的属性,并将自己返回 2原型模式的作用:就是一个复制自己的过程。 3原型模式具体描述 原型模式允许动态的增加或减少产品类, 产品类不需要非得有任何事先确定的等级结构, 原始模型模式适用于任何的等级结构。 缺点是每一个类都必须配备一个克隆方法。   跟MM用QQ聊天,


1原型模式的核心内容是:

A:使用一个clone方法复制自己的属性,并将自己返回

2原型模式的作用:就是一个复制自己的过程。

3原型模式具体描述

原型模式允许动态的增加或减少产品类,

产品类不需要非得有任何事先确定的等级结构,

原始模型模式适用于任何的等级结构。

缺点是每一个类都必须配备一个克隆方法。

 

MMQQ聊天,一定要说些深情的话语了,

我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,

这就是我的情话prototype了。

原型模式:通过给出一个原型对象来指明所要创建的对象的类型,

然后用复制这个原型对象的方法创建出更多同类型的对象。

4原型模式类图

5.代码:

#include<iostream>

#include <string>

using namespace std;

//原型模式允许动态的增加或减少产品类,

//产品类不需要非得有任何事先确定的等级结构,

//原始模型模式适用于任何的等级结构。

//缺点是每一个类都必须配备一个克隆方法。

 

//MMQQ聊天,一定要说些深情的话语了,

//我搜集了好多肉麻的情话,需要时只要copy出来放到QQ里面就行了,

//这就是我的情话prototype了。

//原型模式:通过给出一个原型对象来指明所要创建的对象的类型,

//然后用复制这个原型对象的方法创建出更多同类型的对象。

class Resume

{

private:

    string name, sex, age, timeArea, company;

public:

    Resume(string s)

    {

        name = s;

    }

    void setPersonalInfo(string s, string a)

    {

        sex = s;

        age = a;

    }

    void setWorkExperience(string t, string c)

    {

        timeArea = t;

        company = c;

    }

    void display()

    {

        cout << name << "  " << sex << "  " << age << endl;

        cout << "工作经历:  " << timeArea << "  " << company << endl << endl;

 

    }

    Resume *clone()

    {

        Resume *b;

        b = new Resume(name);

        b->setPersonalInfo(sex, age);

        b->setWorkExperience(timeArea, company);

        return b;

    }

};

 

int main()

{

    Resume *r = new Resume("李彦宏");

    r->setPersonalInfo("", "30");

    r->setWorkExperience("2007-2010", "读研究生");

    r->display();

 

 

    Resume *r2 = r->clone();

    r2->setWorkExperience("2003-2007", "读本科");

 

    r->display();

    r2->display();

 

    cin.get();

    return 0;

}

运行结果如下:

目录
相关文章
|
监控 算法 Linux
LabVIEW开发CAN通讯协议
LabVIEW开发CAN通讯协议
531 0
|
SQL 数据采集 分布式计算
Dataphin功能大图(三)研发:设计即研发,规范建模保障数据模型与代码的一致性
在《Dataphin核心功能: 规划功能》一文中, 讲到过Dataphin的OneModel方法论将数据建设分为四层, 分别为主题域模型(建模), 概念模型, 逻辑模型和分析模型。本文将继续展开逻辑模型和分析模型的讲解。
Dataphin功能大图(三)研发:设计即研发,规范建模保障数据模型与代码的一致性
alipay.trade.refund(统一收单交易退款接口) 集成流程
接口名称:统一收单交易退款接口 英文名称:alipay.trade.refund 主要用于交易资金的退款 一、文档地址 官方文档地址:[url]https://docs.open.alipay.com/api_1/alipay.trade.refund[/url] 二、开发前准备工作 调用步骤:[url]https://openclub.alipay.com/read.php?tid=12194&fid=69[/url] 注意事项:1、支持沙箱测试;2、需签约并添加功能;3、支持第三方调用。
2785 0
|
弹性计算 自然语言处理 机器人
智能语音交互-语音识别介绍 | 学习笔记
简介:快速学习智能语音交互-语音识别介绍
1190 0
智能语音交互-语音识别介绍 | 学习笔记
|
数据可视化 数据挖掘 数据处理
数据科学手把手:碳中和下的二氧化碳排放分析 ⛵
气候是全球性的话题,本文基于owid co2数据集,分析了世界各地的二氧化碳排放量,并将二氧化碳排放的主要国家以及二氧化碳排放来源进行了可视化。
2529 1
数据科学手把手:碳中和下的二氧化碳排放分析 ⛵
|
Web App开发 编解码 前端开发
vue 接入腾讯实时音视频 trtc-js-sdk 的技术难点与解决方案
1.低延迟,如果要满足比较流畅地进行实时互动,那么单向的端到端的迟延大概要在 400 毫秒以下才能保证流畅沟通; 2.流畅性,你也很难想象在视频过程中频繁卡顿会有良好的互动; 3.回声消除,回声的产生是扬声器播放的声音经过环境反射被麦克风重新采集并传输给对方,这样对方就会一直听到自己的回声,整个互动过程会非常难受; 4.国内外互通,随着现在国内同质化产品越来越多,国内的竞争也异常激烈,很多厂商纷纷选择出海,这时就需要做好海内外的互通; 5.海量并发,当然这不仅仅指实时音视频了,基本对于任何一款互联网产品而言都是必须要考虑的难点。
1247 0
|
消息中间件 存储 运维
厚积薄发--一文带您了解阿里云消息队列(MNS)
MNS 重点聚焦在基准消息队列的核心能力建设,MNS 经过多年迭代与打磨,尽管内部极为复杂,但一直努力保持其在客户端的简单易用,围绕轻量和集成两个命题,着力建设更易用的消息队列产品。
厚积薄发--一文带您了解阿里云消息队列(MNS)
|
数据可视化 容器
echarts第二次渲染不出来的原因
echarts第二次渲染不出来的原因
echarts第二次渲染不出来的原因
CentOS8的阿里云源停止维护后的更新配置方法 2022-2-17
CentOS8的生命周期停止,阿里云源repo也不再维护了,旧的yum/dnf更新报错失效,官方的配置方法也失效无人维护,只好自己经过一段时间研究终于解决了使dnf/yum可以正常更新使用的方法。
|
编解码 Android开发 数据格式
【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )(二)
【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )(二)
545 0
【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )(二)