C++11 设计模式0. 设计模式的基本概念,设计模式的准则,如何学习设计模式,24种设计模式的分为3大类

一 设计模式的基本概念:

模式:指事物的标准样式 或者 理解成 针对特定问题的可重用解决方案。

设计模式,是在特定问题发生时的可重用解决方案。

设计模式一般用于大型项目中。

大型项目中,设计模式保证所设计的模块之间代码的灵活性和可复用性

但是设计模式 : 都需要以增加代码的复杂性为代价。

二 设计模式的准则

2.1 抽象思维:将整个代码中不变的部分抽取出来,切断两个模块之前的耦合。

a. 能从事物中抽取出或者说提炼出一些本质的,共性的内容,把这些共性的内容组合到一起(封装)。下面两种解决问题复杂性的方法可以借鉴:

      (1)分解法:把一个复杂的事物分解成若干个比较简单的事物。这样人们更容易理解。
      (2)抽象法:从每个简单的十五中,抽象出本质的内容封装起来:

b)抽象思维的目的:
    //设计原则:减少代码的重复性,方便代码的扩展性(日后增加新动物品种)
    //做抽象的原则:把比较稳定的,不怎么变化的内容作为一个模块,单独定义出来。

c)抽象思维的检验:
    //如何检验某种抽象是否做的不错呢?
     //c.1)项目需求如果发生更改,不更改现有的代码,通过增加新代码应对需求变更。
        //继承特性,一般用于表达两种意思:(1)抽象机制:抽取出本质的、共性的内容放到基类中;(2)可重用机制:基类中的一些内容,直接拿过来使用。
    //c.2)类中内容太多时,就要对类进行拆分,不要把毫不相关的内容写到一个类中。
      //面向对象程序设计原则之一:单一职责原则——一个类只干好一件事,承担好一种责任,不然就会牵扯太多。

2.2灵活性:

1.修改现有的部分,不会影响到其他部分的内容

2.新增新内容时,尽量少修改,或者不需要改动系统现有的内容

2.3可复用性

可复用:可以重复使用,可以到处用(可以被很多地方调用);

三 学习设计模式的步骤和方法:


    //a)掌握设计模式的基本概念和该设计模式要解决的具体问题。
    //b)动手实际编写相关的测试代码并进一步体验该模式的工作过程。一定不要略过这步。
    //c)编码过程中不断思考和总结设计经验,对于设计不合理的部分及时调整和更改。
    //d)在实际的项目中,细致大胆的采用设计模式进行实战,尤其注意多个设计模式解决问题时模式之间的关联和配合,不要怕出错。

四 设计模式的分类

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

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

相关文章

【软考---系统架构设计师】计算机网络章节

目录 一、TCP/IP协议族 (1)基本介绍 (2)TCP和UDP的区别 (3)DNS协议 (4)DHCP协议 二、网络规划与设计 (1)需求分析 (2)通信规范…

K8S问题记录

服务器宕机导致K8S集群异常,部分nginx服务的pod启动失败 K8S版本:v1.12.5 问题1 nginx pod 启动失败,故障现象如下 nginx Pod 启动以后马上报错: [rootjd-training-cpu-01 ~]# kubectl logs -n paisystem easydl-fe-nginx-79b…

Jenkins构建时报错Error: EACCES: permission denied, open ‘/root/.npmrc解决

在使用Jenkins进行自动化构建时,你可能会遇到权限问题,如“Error: EACCES: permission denied, open ‘/root/.npmrc’”。这类问题通常与文件访问权限有关。本文将详细介绍如何识别和解决这些权限问题,确保你的自动化构建过程顺畅无阻。 问…

VUE3的有关知识

学习vue3的原因 在vue2当中的组件的实例,都是data一块,computed一块,当我们去找某一变量相关的则十分麻烦,vue3是组合式API,vue2是选项式, vue3的优点: 1)组合式更易维护 2)更快的速度 3)更小的体积 4)更好的响应式proxy 使用vue3相关脚手架创建项目 步骤: 1)node -v node版…

Linux查看系统配置信息的命令【lscpu】【free】【df】【uname】【lsblk】【top】

目录 1.查看CPU信息【lscpu】 2.查看内存信息【free】 3.查看文件系统信息【df】 4.查看系统信息【uname】 知识扩展:Red Hat Enterprise Linux 和 Debian GNU/Linux 两者的发展介绍 知识扩展:Centos 和 ubuntu的区别 知识扩展:更多 …

【简单讲解下Tauri】

🌈个人主页:程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

“JavaScript数组:使用与实践“

目录 引言 1. 数组简介 2. 数组方法API 添加和删除元素 修改和访问元素 数组遍历 数组转换和连接 数组排序和搜索 其他常用方法 3. 数组属性 4. 实现数组API 实现添加和删除元素的方法 实现修改和访问元素的方法 实现数组遍历的方法 实现数组转换和连接的方法 …

【Python】FANUC机器人OPC UA通信并记录数据

目录 引言机器人仿真环境准备代码实现1. 导入库2. 设置参数3. 日志配置4. OPC UA通信5. 备份旧CSV文件6. 主函数 总结 引言 OPC UA(Open Platform Communications Unified Architecture)是一种跨平台的、开放的数据交换标准,常用于工业自动化…

聊聊Redis消息队列stream

前言 本期和大家一起探讨了如何基于 redis 实现消息队列,其中实现方案包括三类: redis list:最简单粗暴的实现,存在问题包括:不支持发布/订阅模式、消费端缺少 ack 机制redis pub/sub:支持发布/订阅模式&…

无“相关性”是指商品与分享内容无相关性,下列哪个行为不属于(无)相关性”违规?()

需要查看更多试题和答案,可以前往(题海舟试题答案)进行搜题查看。可以搜“题干关键词”。 无“相关性”是指商品与分享内容无相关性,下列哪个行为不属于(无)相关性”违规?() A.篮球比赛直播,售卖球衣、球鞋、球类与球…

从挑战到机遇:HubSpot如何帮助企业化解出海过程中的难题

企业出海挑战与对策 随着全球化的加速推进,越来越多的企业开始将目光投向海外市场,以寻求更广阔的发展空间。然而,在出海的过程中,企业往往面临着诸多挑战,其中文化差异、法律限制等问题尤为突出。今天运营坛将对这些…

快速开始vue3

版本 node (20.11.1)vue3 (3.4.21)脚手架创建项目并运行 安装脚手架并创建项目npm create vue@latest这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具 2) 安装以下进行选择 ## 配置项目名称 √ Project name: vue3_test ## 是否添加TypeScript支持 √ Add…

创意解决方案:如何将作品集视频集中于一个二维码或链接中?

引言:随着面试环节的进一步数字化,展示自己的作品集成为了求职过程中的重要一环。但除了使用传统的方式,如百度网盘或直接发送多个视频链接,有没有更便捷的方法将作品集的多个视频放在一个链接中呢? 本文将介绍一种创意解决方案…

如何使用try-with-resources关闭非自己创建的InputStream

如何使用try-with-resources关闭非自己创建的InputStream 在Java中,不论InputStream是自己创建的还是由外部提供的,只要它是AutoCloseable的实例,你都可以使用try-with-resources语句来确保它在不再需要时被自动关闭。 try-with-resources语…

RocketMQ 之 IoT 消息解析:物联网需要什么样的消息技术?

作者:林清山(隆基) 前言: 从初代开源消息队列崛起,到 PC 互联网、移动互联网爆发式发展,再到如今 IoT、云计算、云原生引领了新的技术趋势,消息中间件的发展已经走过了 30 多个年头。 目前&a…

数据库被rmallox勒索病毒加密,如何还原?

近年来,网络安全问题日益严峻,勒索病毒作为其中的一种恶意软件,已成为网络安全领域的一大难题。其中,rmallox勒索病毒以其高度的隐蔽性和破坏性,给不少企业和个人带来了严重损失。本文将从rmallox勒索病毒的特点、传播…

一个简单的UI自动化框架应用介绍

项目框架介绍 该数据自动校验小程序采用POM模型,基于Javaseleniumtestngextentsreportexcel POI开发。 框架核心功能 基于PMO模型将页面封装成java对象,并通过selenuim驱动浏览器进行操作。通过excel POI对excel文件进行操作,通过对比导出…

Docker搭建CouchPotato

使用 CouchPotato Docker 镜像搭建电影下载管理器 CouchPotato 是一个电影下载管理器,它可以帮助用户自动搜索、下载和管理电影。通过 Docker 镜像,可以在服务器上轻松部署 CouchPotato,并让其运行在容器中,以便在任何设备上访问…

通过网络api获取日期对应的节假日信息

网络接口获取链接&#xff1a;免费节假日API_原百度节假日API HolidayJudge.h #pragma once#include <QtWidgets/QWidget> #include "ui_HolidayJudge.h"enum DATESTATE {WORK0,//工作日DAYOFF,//休息日HOLIDAY//节假日 };class HolidayJudge : public QWidg…

Linux之线程互斥与同步

1.线程互斥相关概念 临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源 。 临界区&#xff1a;每个线程内部&#xff0c;访问临界自娱的代码&#xff0c;就叫做临界区。 互斥&#xff1a;任何时刻&#xff0c;互斥保证有且只有一个执行流进入临界区&#xff0c;访问临…