面向对象设计模式

news2025/1/16 20:59:34
  • 一、单例

一个类只能创建唯一一个对象

利用限制构造、static完成

  • 二、工厂模式

优势:规范接口(纯虚函数);实现多态(虚函数表);继承

  • 1、简单工厂

一个工厂创建所有产品。

返回基类指针可以创建不同的派生类,实现不同功能。

1、产品基类(设计):抽象类    

2、派生具体的产品A类(设计)

3、派生具体的产品B类(设计)

4、工厂类 (生产)         

注意:纯虚函数被派生类实现完后即为虚函数,当基类指针指向派生类对象时,当基类指针调用虚函数时即调用的是派生类虚函数;当基类指针调用普通函数时,即调用的是基类函数。                                             

  • 2、工厂方法模式(生产简单产品)

不同工厂创建不同产品。

1、产品基类 抽象类  (产品属性)

2、派生具体的产品A类

3、派生具体的产品B类

4、工厂类 抽象类    (生产方式)

5、具体的工厂类A

6、具体的生产类B

  • 3、抽象工厂模式(生产复杂产品)

1、产品基类 抽象类  (产品属性)

2、派生具体的产品A类

3、派生具体的产品B类

4、工厂类 抽象类    (生产方式)

5、具体的工厂类A

6、具体的生产类B

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

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

相关文章

你要不要搞副业

最近看到了几个网友关于年轻人要不要搞副业的一点讨论,学习到了很多。整理分享如下: plantegg 你要不要搞副业? 最近网上看到很多讨论搞副业和远程工作的,我也说点自己的经验看法 当然这完全是出于个人认知肯定不是完全对的、也…

Bluejay电调固件介绍和烧录Bluejay电调固件到BLHeli_S电调的方法

Bluejay电调固件介绍和烧录Bluejay电调固件到BLHeli_S电调的方法 Bluejay电调固件基本介绍Bluejay电调固件特点烧录Bluejay固件准备材料烧录过程 电调调参参数说明 Bluejay电调固件基本介绍 Bluejay是一种数字电调固件,用于控制多旋翼无人机中的无刷电机。 该电调固…

蓝桥杯算法赛 第 6 场 小白入门赛 解题报告 | 珂学家 | 简单场 + 元宵节日快乐

前言 整体评价 因为适逢元宵节,所以这场以娱乐为主。 A. 元宵节快乐 题型: 签到 节日快乐,出题人也说出来自己的心愿, 祝大家AK快乐! import java.util.Scanner;public class Main {public static void main(String[] args) {System.out.println(&qu…

QT day3 作业2.22

思维导图: 作业: 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到…

微信小程序自制动态导航栏

写在前面 关于微信小程序导航栏的问题以及解决办法我已经在先前的文章中有提到,点击下面的链接即可跳转~ 🤏微信小程序自定义的导航栏🤏 在这篇文章中我们需要做一个这样的导航栏!先上效果图 👇👇&#x1f…

如何将实景三维倾斜模型叠加到三维地球上?

​ 通过以下方法可以将实景三维倾斜模型叠加到三维地球上。 方法/步骤 下载三维地图浏览器 http://www.geosaas.com/download/map3dbrowser.exe,安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“倾斜模型”…

物麒平台根据入耳出耳状态使能或禁止触摸按键实现方法

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资 料, 1 消息发送 2 消息处理 3 宏开关 4 代码 #include "app_main.h" #include &q…

Vue.js+SpringBoot开发生活废品回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案,旨在鼓…

FreeRTOS学习第8篇--同步和互斥操作引子

目录 FreeRTOS学习第8篇--同步和互斥操作引子同步和互斥概念实现同步和互斥的机制PrintTask_Task任务相关代码片段CalcTask_Task任务相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第8篇–同步和互斥操作引子 本文目标:学习与使用FreeRTOS中的同步和互斥操…

【vue3语法】开发使用创建项目等

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、vue3创建vue3v2函数式、v3组合式api响应式方法ref、reactive计算属性conputed监听属性wacthvue3 选项式生命周期父子通信父传子defineProps编译宏 子传父de…

linux 0.11 调试c代码

我们可以通过实验楼实验环境 来调试linux0.11的c代码。 cd ~/oslab/ tar -zxvf hit-oslab-linux-20110823.tar.gz -C ~ cd ~/oslab/linux-0.11/ make cd ~/oslab/ nohup ./dbg-c & nohup terminator & ls在新的窗口执行 ./rungdb,进入调试状态。 输入 set disassemb…

三 . 运算符和流程控制——Java基础篇

三 . 运算符和流程控制 1. 运算符 1 . 赋值运算符 1.2.1 基本语法 符号: 当“”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。支持连续赋值。 扩展赋值运算符: 、 -、*、 /、% 赋值运算符符号解释将符号左…

三、矩阵基本知识

目录 1. 理解 2、矩阵的直观感受 3、矩阵与向量 1. 理解 ①矩阵是一个向量组,由许多 行向量 和 纵向量 组成。 ②矩阵方程求解 用增广矩阵初等变换化为 E 。齐次/非齐次方程组 的解用 初等变化 化为 行最简阶梯型。 ③初步认为由多元一次方程组的系数组成&…

谈谈Redis的哈希槽和一致性哈希

一 . 前言 在 Redis 集群里面主要涉及到两种 Hash 算法 : 一种是一致性哈希 , 这种算法在 适用dis Cluster方案中并没有实现,主要在外部的代理模式 (Twemproxy)一种是 Slot 哈希槽算法 ,这种算法就是 Cluster 的核心算法所以谈到这个问题的时候,不能只讲一部分。在 Red…

SpringMVC 学习(六)之视图

目录 1 SpringMVC 视图介绍 2 JSP 视图 3 Thymeleaf 视图 4 FreeMarker 视图 5 XSLT 视图 6 请求转发与重定向 6.1 请求转发 (Forward) 6.2 重定向 (Redirect) 7 视图控制器 (view-controller) 1 SpringMVC 视图介绍 在 SpringMVC 框架中,视图可以是一个 J…

电机控制常见的外围器件

小型断路器: 这些通通都叫小型断路器,二十年的老电工不一定都认识,不信看看_哔哩哔哩_bilibili 1PIN 2PIN 3PIN 4PIN: 正常情况下火线和零线的电流是相等的,但是漏电的情况下,两线的电流差值大于30毫安,漏…

成功解决ModuleNotFoundError: No module named ‘tensorboard‘

成功解决ModuleNotFoundError: No module named ‘tensorboard’ 📅2024年02月25日 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础…

深度学习数据集——球类、运动、体育相关数据集

体育运动的动作识别分类等工作,一直是深度学习实践的重要领域,这里涉及到动作捕捉、分类、识别、计数等多种类型!今天就给大家分享关于以上内容的深度学习数据集!! 1、收集22种类型的运动的图像数据集 数据说明&…

使用apt-mirror做一个本地ubuntu离线apt源

1. 安装 apt-mirror sudo apt-get install apt-mirror2. 创建文件夹 mkdir ./apt_mirror_dir3. 修改apt-mirror的配置文件 sudo gedit /etc/apt/mirror.list得到以下文件,重点对两个位置进行修改: ############# config ################## # ## 修改1&#xff…

鸿蒙中的九种布局概述

鸿蒙中的九种布局概述 概述 鸿蒙开发中包含就种布局,分别为线性布局、层叠布局、弹性布局、相对布局、栅格布局、媒体布局、列表、网格、轮播。 线性布局 线性布局通过Row和Column进行构建,是其他布局的基础。其中Row是水平方向排列,Colu…