原型模式,简化多次创建相同的内容

2024-09-03 00:58

本文主要是介绍原型模式,简化多次创建相同的内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


C++代码:

// filename: prototype.h
// author: Qinglong.mark.He
#include <iostream>
#include < string >

class  Prototype
{
protected :
    std:: string  name;
public :
    Prototype(){}
     virtual  ~Prototype(){}
    
     virtual  Prototype *clone(){ return  nullptr;}
     virtual   void   set ( char  *n){}
     virtual   void  show(){}
};

class  PrototypeA:  public  Prototype
{
public :
    PrototypeA(){
        name = "PrototypeA";
    }
    
    PrototypeA( const  PrototypeA &r){
        name = r.name;
    }
    ~PrototypeA(){
    }
    PrototypeA *clone(){
         return   new  PrototypeA(* this );
    }
     void  show(){
        std::cout<<"PrototypeA name: "<<name<<std::endl;
    }
};

yiyuan.120ask.com/news/7444/9676967.html

yiyuan.120ask.com/news/7444/9676965.html

yiyuan.120ask.com/news/7444/9676963.html

yiyuan.120ask.com/news/7444/9676979.html

yiyuan.120ask.com/news/7444/9676957.html

yiyuan.120ask.com/news/7444/9676954.html

yiyuan.120ask.com/news/7444/9676994.html

yiyuan.120ask.com/news/7444/9676990.html

yiyuan.120ask.com/news/7444/9676984.html

yiyuan.120ask.com/news/7444/9676944.html

yiyuan.120ask.com/news/7444/9676941.html

yiyuan.120ask.com/news/7444/9676939.html

yiyuan.120ask.com/news/7444/9676936.html

yiyuan.120ask.com/news/7444/9676934.html

yiyuan.120ask.com/news/7444/9676931.html

yiyuan.120ask.com/news/7444/9676927.html

yiyuan.120ask.com/news/7444/9676926.html

yiyuan.120ask.com/news/7444/9676924.html

yiyuan.120ask.com/news/7444/9676921.html

yiyuan.120ask.com/news/7444/9676919.html


class  PrototypeB:  public  Prototype
{
public :
    PrototypeB(){
        name = "PrototypeB";
    }
    
    PrototypeB( const  PrototypeB &r){
        name = r.name;
    }
    ~PrototypeB(){
    }
    PrototypeB *clone(){
         return   new  PrototypeB(* this );
    }
     void  show(){
        std::cout<<"PrototypeB name: "<<name<<std::endl;
    }
};


测试用例:

#include "prototype.h"

int  main(){
    auto r1 =  new  PrototypeA;
    auto r2 =  new  PrototypeB;
    auto r3 = r1->clone();
    auto r4 = r2->clone();

    r1->show();
    r2->show();
    delete r1;
    delete r2;

www.aibang.com/article/444091677-443192907/product/11926341.html

www.aibang.com/show/444091677-443192907/product/11926343.html

www.aibang.com/show/444091677-443192907/product/11926345.html

www.aibang.com/show/444091677-443192907/product/11926347.html

www.aibang.com/show/444091677-443192907/product/11926349.html

www.aibang.com/article/444091677-443192907/product/11545941.html

www.aibang.com/show/444091677-443192907/product/11547029.html

www.aibang.com/show/444091677-443192907/product/11926355.html

www.aibang.com/show/444091677-443192907/product/11926357.html

www.aibang.com/show/444091677-443192907/product/11926359.html

www.aibang.com/show/444091677-443192907/product/11926377.html

www.aibang.com/show/444091677-443192907/product/10481603.html

www.aibang.com/show/444091677-443192907/product/11926385.html

www.aibang.com/show/444091677-443192907/product/11926389.html

www.aibang.com/show/444091677-443192907/product/11926395.html

www.aibang.com/show/444091677-443192907/product/11926399.html

www.aibang.com/article/444091677-443192907/product/11926401.html

www.aibang.com/show/444091677-443192907/product/11588729.html

www.aibang.com/show/444091677-443192907/product/11926409.html

www.aibang.com/show/444091677-443192907/product/10532459.html

www.aibang.com/show/444091677-443192907/product/11926423.html

www.aibang.com/show/444091677-443192907/product/11926429.html

www.aibang.com/show/444091677-443192907/product/11926431.html

www.aibang.com/show/444091677-443192907/product/11926437.html

www.aibang.com/show/444091677-443192907/product/11926439.html

www.aibang.com/show/444091677-443192907/product/11926445.html

www.aibang.com/show/444091677-443192907/product/11926449.html

www.aibang.com/show/444091677-443192907/product/11926457.html

www.aibang.com/show/444091677-443192907/product/11926463.html

www.aibang.com/show/444091677-443192907/product/11926467.html


    r3->show();
    r4->show();
    delete r3;
    delete r4;
    
     return  0;
}


 

这篇关于原型模式,简化多次创建相同的内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131571

相关文章

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图