设计模式1——初步认识篇

设计模式1——初步认识篇

一、先让我们浅聊一下面向对象和设计模式。

说起设计模式,我第一次听到它,是在学习面向对象的时候。那么什么是面向对象,什么是设计模式,而且设计模式和面向对象又有什么关系呢?
1、什么是面向对象?

  1. 面向对象是一种思考问题或看待事物的思想,相当于哲学里的认识论。
  2. 面向对象就是要求我们在认识或解决问题的时候,将事情看成是一个个人或物等对象之间的交互而产生和运行的。

2、面向对象和设计模式有关系吗?

答案是有:
面向对象的思想几乎覆盖了我们软件周期的所有阶段。例如:在需求工程阶段的需求收集时期,就是先把目标用户当做一个个对象去调研,调研完之后才使用面向过程的思想根据一个个对象之间的关系把整个业务流程还原;再例如在设计工程或开发工程阶段,使用UML表达设计思想、又或是设计模式等,这些方法论的根基都是基于面向对象这种思想。

3、那么它在编程语言上又有什么体现呢?

我们都听说过Java、python、C++等是面向对象语言,也听说过C是面向过程(结构化编程)语言。那么面向对象语言是什么?简短的说面向对象语言的特点是:

  1. 封装
  2. 继承
  3. 多态

而这些,就是面向对象这种思想在设计语言层面的衍生

4、那什么是设计模式呢?

  • 设计模式是一种软件工程中常见的解决问题的可复用方案。它们是对软件设计中常见问题的解决方案的描述。设计模式有助于提高代码的可维护性、可扩展性和可重用性,同时也提供了一种共享经验的方式,使得开发人员能够更有效地沟通和合作。

  • 设计模式在编程语言方面的实现正是使用了上述面向对象语言的3个特点,同时也是不可或缺的条件,它是设计模式编程范式的核心前提。老实说,如果有人天赋异禀,可以对上述3个特性灵活应用,那么不学设计模式都行,因为你完全可以自己去定义模式。当然你也应当遵守一些设计原则。

二、典型的23种设计模式汇总分类

设计模式分类

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

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

相关文章

你不知道的ConstraintLayout高级用法

文章目录 1. ConstraintLayout介绍2. 高级用法2.1 Gone Margin2.2 偏移2.3 居中2.4 尺寸约束2.5 链2.6 角度定位(圆形定位) 3. 工具类3.1 Guideline(参考线)3.2 Barrier(栅栏)3.3 Group(组&…

信息与未来2017真题笔记

T1. 龟兔赛跑 题目描述 兔子又来找乌龟赛跑啦!同样的错误兔子不会犯两次,所以兔子提出赛跑的时候,乌龟就觉得这场比赛很不公平。于是兔子进一步放宽了条件,表示他可以在比赛开始以后先睡 t t t 分钟再开始追乌龟。 乌龟这下没…

YOLOv5改进 | 注意力机制 | 用于移动端的高效坐标CA注意力机制

在深度学习目标检测领域,YOLOv5成为了备受关注的模型之一。本文给大家带来的是能用于移动端的高效坐标CA注意力机制。文章在介绍主要的原理后,将手把手教学如何进行模块的代码添加和修改,并将修改后的完整代码放在文章的最后,方便…

答辩PPT不会做?试试这些AI工具,一键生成

在我原本的认知里面,答辩PPT是要包含论文各个章节的,在答辩时需要方方面面都讲到的,什么摘要、文献综述、实证分析、研究结果样样不落。但是,这大错特错! 答辩PPT环节时长一般不超过5分钟,老师想要的答辩P…

PMP证书如何备考?

每个过了PMP考试的考生:“你是如何学习和准备的”?答案基本分三类: 第一种是“临时抱佛脚”式;第二种是“持续抗战式”;第三种是“疲劳作战式”。 第一种比较符合人性和期望—20世纪三大管理定义之一的帕金斯定律&am…

ctfshow web入门 php反序列化 web267--web270

web267 查看源代码发现这三个页面 然后发现登录页面直接admin/admin登录成功 然后看到了 ///backdoor/shell unserialize(base64_decode($_GET[code]))EXP <?php namespace yii\rest{class IndexAction{public $checkAccess;public $id;public function __construct(){…

【Java处理word文档】

Java处理word文档 前言一、word是什么&#xff1f;二、Java处理word2.1、依赖包2.2、加载word样式2.3、读入文件2.4、单一样式段落2.5、复合样式段落2.6、将段落写入word2.7、word表格2.8、超链接2.9、写入样式及文件保存 总结示例源码样式xmlWordConstantWordStylesUtilWordUt…

Windows Server 2012 R2 新增D盘分区

我们经常搭建windows版本的游戏时会要在D盘上操作&#xff0c;今天就介绍下新的服务器如何新增一个D盘。 在"开始"图标右边有个”服务器管理器“&#xff0c;单击点开 点开服务器管理器后&#xff0c;点击“工具”打开“计算机管理” 打开计算机管理后点击“存储”-…

QT切换控件布局

1、切换前垂直布局 2、切换后水平布局 3、关键代码 qDebug() << "开始切换布局";QWidget *widget centralWidget();QLayout *layout widget->layout();if(layout){while(layout->count()){QLayoutItem *item layout->takeAt(0);if(item->layout…

【DDR 终端稳压器】Sink and Source DDR Termination Regulator [C] S0 S1 S2 S3 S4 S5 6状态

TPS51200A-Q1 器件通过 EN 功能提供 S3 支持。EN引脚可以连接到终端应用中的SLP_S3信号。当EN 高电平&#xff08;S0 状态&#xff09;时&#xff0c;REFOUT 和 VO 引脚均导通。当EN 低电平&#xff08;S3状态&#xff09;时&#xff0c;VO引脚关断并通过内部放电MOSFET放电时…

决策树的学习(Decision Tree)

1.对于决策树的概念&#xff1a; **本质上&#xff1a;**决策树就是模拟树的结构基于 if-else的多层判断 2.目的&#xff1a; 对实例进行分类的树形结构&#xff0c;通过多层判断&#xff0c;将所提供的数据归纳为一种分类规则。 3.优点&#xff1a; 1.计算量小&#xff0c;…

源代码防泄密的重要性

​源代码”作为互联网企业的核心资产之一&#xff0c;其安全性至关重要。源代码泄露不仅可能导致企业丧失技术优势&#xff0c;还可能引发知识产权纠纷、增加竞争对手的市场竞争力&#xff0c;甚至可能被用于恶意目的&#xff0c;如开发恶意软件等。因此&#xff0c;保护源代码…

婉转之声舞台之梦

【婉转之声&#xff0c;舞台之梦】&#x1f3a4; 当旋律响起&#xff0c;每个音符承载着梦想与热情。#婉拒歌手# #歌手2024# 话题引爆网络&#xff0c;观众的期待值冲破天际&#xff0c;但谁才是那婉拒名单上的神秘巨星&#xff1f;[嘻嘻] 今夜&#xff0c;我们不谈已成的荣耀&…

QT的TcpServer

Server服务器端 QT版本5.6.1 界面设计 工程文件&#xff1a; 添加 network 模块 头文件引入TcpServer类和TcpSocket&#xff1a;QTcpServer和QTcpSocket #include <QTcpServer> #include <QTcpSocket>创建server对象并实例化&#xff1a; /*h文件中*/QTcpServer…

使用Django中的Session和Cookie来传递数据

在Django中&#xff0c;Session和Cookie是两种常用的机制&#xff0c;用于在服务器端和客户端之间传递数据。下面我将简要介绍如何在Django中使用Session和Cookie来传递数据。 1、问题背景 在 Django 中&#xff0c;可以使用 request.POST 来获取表单提交的数据。但是&#xf…

iOS plist文件增删改查

一. plist简介 plist文件&#xff0c;即属性列表文件&#xff0c;全名是Property List&#xff0c;这种文件的扩展名为.plist&#xff0c;因此&#xff0c;通常被叫做plist文件。它是一种用来存储串行化后的对象的文件&#xff0c;在iOS开发中通常用来存储用户设置&#xff0c…

GaussDB数据库SQL系列-复合查询

目录 一、前言 二、复合查询基础 三、实际应用示例 1、使用UNION合并查询结果 2、使用INTERSECT找出共同元素 3、使用EXCEPT排除特定结果 四、高级技巧 1、子查询实例 2、JOIN的应用 五、总结 一、前言 GaussDB是华为自主创新研发的分布式关系型数据库&#xff0c;具…

按键的短按、长按和连续的划分

在实际生活中&#xff0c;我们使用到的按键在短按、长按和按键松开时都会触发不同的功能。按键短按后松开和长按后松开的应用比短按和长按的应用较少&#xff0c;我了解的按键短按后松开和长按后松开的应用是在点动控制和长动控制中。这里主要讨论按键的短按、长按和连续这三种…

postgresql主从复制

用vmware 搭建的两台虚拟机 操作系统&#xff1a;Ubuntu 24.04 Server版 数据库&#xff1a;postgresql 16.2 主库&#xff1a;192.168.2.11 从库&#xff1a;192.168.2.12 如果遇到网络无法上网&#xff0c;可参考一下 Vmware 搭建的Ubuntu 24.04 网络配置-CSDN博客 1.两…

LED显示屏的部件组成及相关知识

LED显示屏作为现代化信息传播的重要载体&#xff0c;在各种场所得到了广泛应用。其功能强大&#xff0c;效果生动&#xff0c;但其背后的部件组成却是复杂而精密的。本文将介绍LED显示屏的主要部件组成及相关知识&#xff0c;以帮助读者更好地理解LED显示屏的工作原理和构造。 …