设计模式1-简介

设计模式简介

  • 专栏的目的
  • 什么是设计模式
  • 设计模式要学什么
    • 软件开发原则
    • 主流设计模式
  • 学习建议
    • 经典面试题
  • 资源

专栏的目的

1.理解松耦合的设计思想

2.掌握面向对象设计原则

3.掌握重构技法改善设计

4.掌握GOF核心设计模式

什么是设计模式

每一个模式描述了一个在我们周围不断重复发生的问题以及该问题的解决方案。的核心,这样你就能一次又一次的使用该方案,而不必重复的劳动。

通俗来说:设计模式是我们在软件开发时针对常见问题的通用的,这个方案也是前辈们不断摸索总结出的好的辩证方法,可以理解成为打游戏的攻略。遇到同一类boss时怎么走位

作用
减少烂代码,让项目更好维护。开拓思维,也是软件开发岗位的面试重点

设计模式要学什么

软件开发原则

所有的世界模式基本都是建立在这些原则的基础上进行开发的。这八个原则分别是?
1.单一职责原则
2.开闭原则
3.里氏替换原则。
4.依赖倒置原则
5.接口隔离原则
6. 迪米特法则(最少知道原则)
7.合成聚合复用原则

主流设计模式

一共有23种

在这里插入图片描述

尤其是这个单例模式是重点中的重点,它有很多种不同的实现方式,我们都要了解。

学习建议

先理解概念,了解每个设计模式的特点和应用场景,再多加练习,运用到实际项目。

三个阶段的学习。首先是基础学习,本阶段的目标是了解设计模式。它的概念作用,应用场景特点和类和对象的关系。在学习设计模式时,多个实际生活相结合会更好的理解设计模式的含义。

第二阶段就是编码实现。

最后的阶段也就是项目实战。

经典面试题

单例模式有哪些实现方式?有哪些优缺点?请手写其中一种

你用过哪些设计模式,为什么用它?

资源

在这里插入图片描述
项目
项目实战 - 鱼皮原创项目教程系列 (opens new window)中的聚合搜索项目、OJ 项目都运用了大量的设计模式,推荐学习
书籍
⭐《图解设计模式》(强烈推荐这本书,正是用 Java 语言实现,图多、有示例代码、有习题和答案,很不错)
《Head First 设计模式》
《大话设计模式》
《设计模式:可复用面向对象软件的基础》(大黑书,有能力的话也可以去读)
视频
尚硅谷图解 Java 设计模式:https://www.bilibili.com/video/BV1G4411c7N4(opens new window)
文档
菜鸟教程:https://www.runoob.com/design-pattern/design-pattern-tutorial.html(opens new window)
图说设计模式:https://design-patterns.readthedocs.io/zh_CN/latest/(opens new window)

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

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

相关文章

公共 IP 地址和私有 IP 地址的区别总结

什么是IP地址? IP 地址,即互联网协议地址(Internet Protocol Address),是网络设备在网络中进行通信的标识。IP 地址可以看作是设备在网络中的“地址”,有助于数据包在网络中找到正确的接收端。IP 地址主要…

基于大型语言模型的全双工语音对话方案

摘要解读 我们提出了一种能够以全双工方式运行的生成性对话系统,实现了无缝互动。该系统基于一个精心调整的大型语言模型(LLM),使其能够感知模块、运动功能模块以及一个具有两种状态(称为神经有限状态机,n…

Vue: Module “vue“ has no exported member xxx

这个问题让我困扰了好一会儿,我询问了 chatgpt 和各种网站社区,尝试了切换依赖的版本,清除缓存等等,依然没有解决 不过算是有心栽花花不开,无心插柳柳成荫,碰巧解决了,也不知道是不是这个原因&a…

Win11下安装VS2022失败的解决办法

前几天我把我的HP Z840的操作系统换成了Win11,在重装VS2022时遇到了麻烦,提示无法安装 Microsoft.VisualStudio.Devenv.Msi。 查看安装日志提示:Could not write value devenv.exe to key \SOFTWARE\Microsoft\Internet Explorer\Main\Featur…

轻松获取指定日期所在周的周一和周日

哈喽,大家好呀,好久不见!今天是一篇浅记。根据传入日期自动获取所在周一和周日… 正常基操方法,根据传入日期自动获取所在周一和周日。注意传入日期是周日的情况哈,需要往前推7天才是周一。 楼主方法中已处理&#xf…

57.SAP MII产品介绍(07)功能详解(06)Workbench-SQLQuery

1.SQLQuery概念 您可以使用SAP Manufacturing Integration and Intelligence(SAP MII)Workbench中的SQLQuery来创建访问面向SQL的连接器(如IDBC连接器)的模板。此查询的扩展名为tqsq。 简而言之,SQLQuery就是一段…

计算机系统基础实训七-MallocLab实验

实验目的与要求 1、让学生理解动态内存分配的工作原理; 2、让学生应用指针、系统级编程的相关知识; 3、让学生应用各种动态内存分配器的实现方法; 实验原理与内容 (1)动态内存分配器基本原理 动态内存分配器维护…

细说MCU的ADC模块单通道单次采样的实现方法

目录 一、工程依赖的硬件 二、设计目的 三、建立工程 1、配置GPIO 2、配置中断 3、配置串口 4、配置ADC 5、选择时钟源和Debug 6、配置系统时钟和ADC时钟 四、设置采样频率 五、代码修改 1、重定义外部中断回调函数 2、启动ADC 3、配置printf函数 六、运行并…

mysql5.7windows安装修改密码

mysql5.7windows安装修改密码 1.首先下载Windows 64位安装包2.安装服务3.my.ini4.初始化4.做成Windows服务5.重置密码 1.首先下载Windows 64位安装包 2.安装服务 双击运行安装服务,一直next; 在Choose Setup Type界面中 选择Custom选项,意思…

头歌资源库(14)残缺棋盘

一、 问题描述 二、算法思想 首先,将2^k 2^k的棋盘划分为四个相等大小的子棋盘,定义为左上、左下、右上和右下四个子棋盘。 然后,根据残缺格的坐标,确定其中一个子棋盘是不完整的,即残缺子棋盘。假设残缺子棋盘是左…

新火种AI|Claude 3.5一夜封王超越GPT-4o!留给OpenAI的时间真的不多了...

AI大模型更新换代的速度,的确快到令人难以想象。 相信很多人现在对“最先进AI大模型”的印象还停留在GPT-4,但事实上,大模型领域的头把交椅早已悄然易主了好几回。就在GPT-4惊艳全球不久之后,其“死对头” Anthropic发布了Claude…

“循环购“:快消品行业的创新商业模式引领者

大家好,我是吴军,来自一家在软件开发与商业模式创新领域享有盛誉的公司。我们专注于为企业提供全方位的商城系统搭建及商业模式定制服务。迄今为止,我们已经成功地为众多企业打造了超过200种独特的商业模式,助力他们实现了显著的商…

【PL理论】(26) 内存管理:C语言实现内存管理的方式 | 栈帧的分配和释放 | C/C++ 手动内存管理

💭 写在前面:在前面的章节中,语言的语义只分配了新的内存位置,我们没有讨论内存位置的释放。在实际的语言中,内存位置在执行过程中会被不断地分配和释放。下面的章节,我们将讨论编程语言的这种内存管理&…

基于IDEA的Maven(依赖介绍和引用)

如何通过一个坐标信息(依赖)去引用 ,某个"jar 包" 会在这篇博客进行学习。 目录 一、学习开始 (0)项目的结构组成和 "pom.xml" 文件内容。 (1)首先需要一个标签&#xf…

方差分析【单/双因素方差分析】

文章目录 方差分析一、单因素方差分析(Analysis of Variance)1.方差分析在做什么?2.方差分析的思路:3.方差分析中的计算:4.构造F统计量: 二、双因素方差分析(Two-way ANOVA)1.双因素方差分析在做什么&#…

时序预测 | Matlab基于Transformer多变量时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于Transformer多变量时间序列多步预测; 2.多变量时间序列数据集(负荷数据集),采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据; 3…

53【场景作图】纵深感

1 想清楚什么是前 什么是后 如果背景虚化,就不要处理地很平面,如果很平面,就留一个清晰的边缘 2 重叠 遮挡 被遮挡的物体会更远

微信小程序在独立分包中安装自定义依赖组件,构建自定义 npm 依赖

在微信小程序app.json文件中创建一个独立分包 然后在分包文件夹下 创建一个 package.json文件,在文件中添加你要安装的依赖文件及版本 在终端中开始安装依赖:npm i 依赖安装完成后,会产生一个 node_modules文件 需要项目的根目录下的projec…

动态规划:基本概念

Dynamic Programming 动态规划(Dynamic Programming, DP) 是一种算法设计技巧,通常用来解决具有重叠子问题和最优子结构性质的问题。它通过将问题分解为更小的子问题,逐步解决这些子问题并将结果存储起来,以避免重复计…

外星人Alienware m18R1 原厂Windows11系统

装后恢复到您开箱的体验界面,包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统,经厂家手调试最佳状态,性能与功耗直接拉满,体验最原汁原味的系统。 原厂系统下载网址:http://w…