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

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

相关文章

springboot控制bean的创建顺序

《springboot控制bean的创建顺序》本文主要介绍了spring-boot控制bean的创建顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录1、order注解(不一定有效)2、dependsOn注解(有效)3、提前将bean注册为Bea

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

java创建xls文件放到指定文件夹中实现方式

《java创建xls文件放到指定文件夹中实现方式》本文介绍了如何在Java中使用ApachePOI库创建和操作Excel文件,重点是如何创建一个XLS文件并将其放置到指定文件夹中... 目录Java创建XLS文件并放到指定文件夹中步骤一:引入依赖步骤二:创建XLS文件总结Java创建XLS文件并放到指定文件

C++中的解释器模式实例详解

《C++中的解释器模式实例详解》这篇文章总结了C++标准库中的算法分类,还介绍了sort和stable_sort的区别,以及remove和erase的结合使用,结合实例代码给大家介绍的非常详细,感兴趣... 目录1、非修改序列算法1.1 find 和 find_if1.2 count 和 count_if1

Redis中群集三种模式的实现

《Redis中群集三种模式的实现》Redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1. Redis三种模式概述2、Redis 主从复制2.1 主从复制的作用2.2 主从复制流程2

深入理解MySQL流模式

《深入理解MySQL流模式》MySQL的Binlog流模式是一种实时读取二进制日志的技术,允许下游系统几乎无延迟地获取数据库变更事件,适用于需要极低延迟复制的场景,感兴趣的可以了解一下... 目录核心概念一句话总结1. 背景知识:什么是 Binlog?2. 传统方式 vs. 流模式传统文件方式 (非流式)流