《C++设计模式》——创建型

news2024/10/1 15:19:00

前言

创建型为了创建东西才是有用的,创建型设计模式使用的场景:
1、创建一个东西;
2、可重复利用;
3、灵活性高,代码可因地制宜。

Factory Method(工厂模式)

简单工厂模式

主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的 virtual 函数得到不同的结果。
GOOD:适用于不同情况创建不同的类时
BUG:客户端必须要知道基类和工厂类,耦合性差
在这里插入图片描述

simpleFactory.h

#ifndef CLION_TEST_SIMPLEFACTORY_H
#define CLION_TEST_SIMPLEFACTORY_H

//基类
class COperation {
public:
    int m_nFirst;
    int m_nSecond;

    virtual double GetResult() {
        double dResult = 0;
        return dResult;
    }
};

//加法
class AddOperation : public COperation {
public:
    double GetResult() final {
        return m_nFirst + m_nSecond;
    }
};

//减法
class SubOperation : public COperation {
public:
    double GetResult() final {
        return m_nFirst - m_nSecond;
    }
};

//工厂类
class CCalculatorFactory {
public:
    static COperation *Create(char cOperator) {
        COperation *oper;
        switch (cOperator) {
            case '+':
                oper = new AddOperation();
                break;
            case '-':
                oper = new SubOperation();
                break;
            default:
                oper = new AddOperation();
                break;
        }
        return oper;
    }
};

#endif //CLION_TEST_SIMPLEFACTORY_H

main.cpp

#include <iostream>
#include "simpleFactory.h"

using namespace std;

int main() {

    int a = 1;
    int b = 2;
    COperation * op=CCalculatorFactory::Create('-');
    op->m_nFirst=a;
    op->m_nSecond=b;
    cout<<op->GetResult()<<endl;
    return 0;
}

Abstract Factory(抽象工厂)

Builder(建造者)

Prototype(原型)

Singleton(单例)

后记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/983622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试包含哪些内容?

性能测试是对软件产品在特定条件下的性能进行测试和评估的过程。性能测试的内容可以包括以下几个方面&#xff1a; 1、负载测试&#xff1a;负载测试是指在特定条件下&#xff0c;对软件产品的性能进行测试和评估。测试人员可以通过模拟不同的用户数量、并发请求、访问频率等条…

学妹学Java(一)

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; Hello&#xff0c;亲爱的各位友友们&#xff0c;好久不见&#xff0…

基于Java+SpringBoot+Vue前后端分离精简博客系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Kubernetes入门 十四、存储管理

目录 临时存储hostPathEmptyDir NFS 挂载安装NFS配置文件 PV和PVC概述PV 的回收策略PV 的访问模式PV 的状态使用PV和PVC生命周期 动态供应StorageClass动态供应流程NFS 动态供应案例 临时存储 Kubernetes 支持很多类型的卷。 Pod可以同时使用任意数目的卷类型。 临时卷类型的…

centroen 23版本换界面了

旧版本 新版本 没有与操作系统一起打包的ISO文件了&#xff0c;要么先安装系统&#xff0c;再安装Centreon&#xff0c;要么用pve导入OVF文件

美客多平台经营秘籍:为何测评补单操作是必要的?

许多经营美客多平台的商家有一种观念&#xff0c;他们认为美客多平台的规则与亚马逊有所区别。在美客多上&#xff0c;店铺比产品更重要&#xff0c;而且平台的竞争相对较小。因此&#xff0c;他们认为在美客多平台进行补单操作是不必要的。 然而&#xff0c;根据美客多平台的…

在 S/4HANA、ECC 和 ERP 上轻松扩展或简化和自动化您的 SAP WM 到移动环境

为您的 SAP WM 提供完整的原生 SAP GUI 适用于 iOS、Android 和手持式 Scanguns 的 Liquid UI 基于原生渠道架构 &#xff08;NCA&#xff09; 构建&#xff0c;可原生连接到您的 SAP WM&#xff0c;同时保留 SAP GUI 事务的丰富性。它使您能够直接从移动设备访问 MIGO、MI04、…

数据库 范式化和反范式化

第一范式 1NF 主要确保数据表中每个字段的值必须具有原子性&#xff0c;也就是说数据表中每个字段的值为不可再次拆分的最小数据单元 第二范式 2NF 在满足第一范式的基础上&#xff0c;还要满足数据表里的每一条数据记录&#xff0c;都是可唯一标识的&#xff0c;而且所有非…

线性代数的学习和整理18:什么是维度,什么是秩?秩的各种定理秩的计算 (计算部分未完成)

目录 0 问题引出&#xff1a;什么是秩&#xff1f; 概念备注&#xff1a; 1 先厘清&#xff1a;什么是维数&#xff1f; 1.1 真实世界的维度数 1.2 向量空间的维数 1.2.1 向量空间&#xff0c;就是一组最大线性无关的向量组/基张成的空间 1.3 向量α的维数 1.3.1 向量的…

苹果证书分类及作用详解,助力开发者高效管理应用程序

转载&#xff1a;苹果证书的作用及分类详解 摘要&#xff1a;本文将详细介绍苹果证书的作用及分类&#xff0c;包括企业证书、开发者证书、 推送证书、分发证书和MDM证书&#xff0c;帮助开发者了解如何正确使用和管理这些证书&#xff0c; 提升应用程序的开发和发布效率。 引…

供配电技术

最近&#xff0c;在上一门关于供配电技术的课程&#xff0c;虽说与自动化的关系并不是十分大&#xff0c;但对于扩展知识面还是有很大用处的&#xff0c;不至于与其他人交谈此方面的相关知识的时候&#xff0c;一头雾水。

网络丢包问题,敢不敢这样定位?

下午好&#xff0c;我的网工朋友。 所谓丢包&#xff0c;是指在网络数据的收发过程中&#xff0c;由于种种原因&#xff0c;数据包还没传输到应用程序中&#xff0c;就被丢弃了。 这些被丢弃包的数量&#xff0c;除以总的传输包数&#xff0c;也就是我们常说的丢包率。 丢包…

胖小酱为什么天上会打雷?

很久很久以前&#xff0c;上帝并不是住在天上的&#xff0c;而是和人们住在一起的。他们相处融洽&#xff0c;生活很快乐。 人们都很尊敬上帝&#xff0c;天冷的时候&#xff0c;送柴禾给他取暖;缺吃的时候&#xff0c;送食物给他充饥。 上帝呢&#xff0c;对大家是一视同仁&am…

SolidKits.BOMs高级BOM及属性批量导入工具个人版上线了

Solidkits自主研发的SolidKits.BOMs工具可以在不启动SOLIDWORKS的情况下&#xff0c;一键导出各种BOM&#xff0c;如结构BOM、总汇总BOM、分类汇总BOM等&#xff0c;相比于人工编制BOM表&#xff0c;不仅能提升出BOM的效率&#xff0c;还可大幅降低出错几率。 为满足广大个人客…

Zabbix -- 创建监控项及触发器

目录 一、创建监控项 二、创建触发器 三、测试触发器 一、创建监控项 添加带参数的监控项&#xff0c;以磁盘使用率为例子。 vfs.fs.size[/,pused] 表示显示当前磁盘所占用的百分比 vfs.fs.size[/,used] 表示显示当前磁盘所占用的空间&#xff0c;单位为B vfs.fs.size[/,f…

mybatis执行自带update方法遇到的坑

1. 背景 项目上需要对已有oracle数据源进行兼容改造&#xff0c;兼容doris数据源。改造过程中发现&#xff0c;启动项目时有一个类内部执行updateByPrimaryKeySelective时异常。把日志打印出的SQL复制到doris数据库执行&#xff0c;提示的错误与项目内一致&#xff0c;说明错误…

半导体制造工艺(一)光刻

在这里开个新专题&#xff0c;主要详细描述半导体制造整个流程中所用到的设备工艺步骤。 在集成电路制造工艺中&#xff0c;光刻是决定集成器件集成度的核心工序&#xff0c;该工序的作用是将图形信息从掩模版&#xff08;也称掩膜版&#xff09;上保真传输、转印到半导体材料衬…

手机也能轻松搭建个人博客,使用安卓Termux+Hexo建立自己的网站

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…

技术漫谈|IVR通用开发框架简说

IVR为Interactive Voice Response的缩写&#xff0c;意为交互式语音应答&#xff08;系统&#xff09;。它可以应答客户的呼叫&#xff0c;然后为呼叫者提供语音导航或自助服务&#xff0c;呼叫者可通过按键输入或使用语音命令进行选择。随后&#xff0c;IVR可通过呼叫路由将呼…