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

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

相关文章

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

spoj705( 求不相同的子串个数)

题意:求串s的不同子串的个数 解题思路:任何子串都是某个后缀的前缀,对n个后缀排序,求某个后缀的前缀的个数,减去height[i](第i个后缀与第i-1 个后缀有相同的height[i]个前缀)。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstrin

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)