【设计模式】一、设计模式概述

文章目录

    • 一、设计模式概述
      • (一)设计模式是什么
        • 1. 设计模式的定义
        • 2. 设计模式的组成要素
        • 3、常用设计模式一览表
      • (二)设计模式的优点(用途)
      • ※ 本文小结


一、设计模式概述

(一)设计模式是什么

1. 设计模式的定义

设计模式的一般定义如下:

设计模式(Design Pattern) 是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结,使用设计模式是为了可以重用代码,让代码更让容易被他人理解并且提高代码的可靠性。

狭义的设计模式 是指 GoF 在 Design Patterns: Elements of Reusable Object-Oriented Software(《设计模式:可复用面向对象软件的基础》)一书中所介绍的23种经典设计模式。

2. 设计模式的组成要素

设计模式一般包括模式名称、问题、目的、解决方案、效果等组成要素,其中关键要素是模式名称、问题、解决方案和效果。

  • 模式名称(Pattern Name): 通过一两个词来为模式命名,以便我们更好地理解模式并方便开发人员之间的交流,绝大多数模式都是根据其功能或模式结构来命名的(GoF设计模式中没有一个模式用人名命名)。
  • 问题(Problem): 描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因。
  • 解决方案(Solution): 描述了一个设计模式的组成部分,以及这些组成部分之间的相互关系、各自的职责和协作方式,通常解决方案通过UML类图和核心代码进行描述。
  • 效果(Consequence): 描述了模式的优缺点以及在使用模式时应权衡的问题。
3、常用设计模式一览表
类型模式名称学习难度使用频率
(一)创建型模式(5种)单例模式★☆☆☆☆★★★★☆
简单工厂模式(备注:不在GoF 23种设计模式中)★★☆☆☆★★★☆☆
工厂模式★★☆☆☆★★★★★
抽象工厂模式★★★★☆★★★★★
原型模式★★★☆☆★★★☆☆
建造者模式★★★★☆★★☆☆☆
(二)结构型模式(7种)适配器模式★★☆☆☆★★★★☆
桥接模式★★★☆☆★★★☆☆
组合模式★★★☆☆★★★★☆
装饰模式★★★☆☆★★★☆☆
外观模式★☆☆☆☆★★★★★
享元模式★★★★☆★☆☆☆☆
代理模式★★★☆☆★★★★☆
(三)行为型模式(11种)职责链模式★★★☆☆★★☆☆☆
命令模式★★★☆☆★★★★☆
解释器模式★★★★☆★☆☆☆☆
迭代器模式★★★☆☆★★★★★
中介者模式★★★☆☆★★☆☆☆
备忘录模式★★☆☆☆★★☆☆☆
观察者模式★★★☆☆★★★★★
状态模式★★★☆☆★★★☆☆
策略模式★☆☆☆☆★★★★☆
模板模式★★☆☆☆★★★☆☆
访问者模式★★★★☆★☆☆☆☆

(二)设计模式的优点(用途)

  • 提供了一种共享的设计词汇和概念,使开发人员能够更好地沟通和理解彼此的设计意图。
  • 提供了经过验证的解决方案,可以提高软件的可维护性、可复用性和灵活性。
  • 促进了代码的重用,避免了重复的设计和实现。
  • 通过遵循设计模式,可以减少系统中的错误和问题,提高代码质量。

※ 本文小结

在这里插入图片描述


参考资料

参考书籍:《设计模式的艺术 / 刘伟著》

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

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

相关文章

tcp/ip协议2实现的插图,数据结构8 (30 - 32章)

(201) 201 三十0 中断优先级补充 (202) 202 三十1 TCP的用户需求 函tcp_usrreq一 (203) 203 三十2 TCP的用户需求 函tcp_usrreq二 (204) 204 三十3 TCP的用户需求 函tcp_usrreq三 (205) 205 三十4 TCP的用户需求 函tcp_usrreq四 (206) 206 三十5 TCP的用户需求 函tcp_usrreq五 …

docker实战(3)

1, jdk17版本的dockerfile FROM eclipse-temurin:17-jre ADD ./target/ods-poc-0.0.1-SNAPSHOT.jar /home/app/app.jar WORKDIR /home/app ENV TZ Asia/Shanghai ENTRYPOINT ["java","-jar","/home/app/app.jar"] EXPOSE 8083dockerfile 1, …

emment语法

文章目录 1. 生成普通的标签2. 生成 div类名3. 生成指定标签类名/id 值4. 生成带有子元素的标签5. 生成内部文本6. 一次可以生成多个标签7. 生成带有指定属性 的元素8. 生成相邻兄弟元素 1. 生成普通的标签 本质使用的就是元素选择器,例如 div p a 标签等等。 2. …

Openlayers入门教程 --- 万字长篇

也许你还不熟悉Openlayers,也许你是一个Openlayers小白,零基础没关系,这篇文章提供最基础的 Openlayers 教程,简单易学,贯穿整个Openlayers 知识体系。读完本文,您将会对 Openlayers 有一个全新的认识。 文…

图像分类技术在电商平台的创新应用与实践

一、引言 在当今快速发展的互联网电商领域,商家面临着激烈的竞争和不断变化的市场需求。我们在服务电商的过程中,利用AI大模型技术创新性地引入了图像分类技术,为供应链管理带来了革命性的变革。接下来,我们将深入探讨这一项目的…

51单片机基础篇系列-超声波测距

🌈个人主页:会编辑的果子君 💫个人格言:“成为自己未来的主人~” HC-SR04产品特点 典型工作用电压:5V 超小静态工作电流:小于2mA 感应角度:不大于15度 探测距离:2cm-400cm 高精度&#…

论文阅读:LAPFormer: A Light and Accurate PolypSegmentation Transformer

这是一个基于Transformer的轻量级图像分割模型。作者们使用MiT(Mix Transformer)作为编码器,并为LAPFormer设计了一个新颖的解码器,该解码器利用多尺度特征,并包含特征精炼模块和特征选择模块,以生成精细的…

16. UE5 RPG获取GE应用的回调,并根据Tag设置数据显示到窗口

在上一篇介绍了对标签如何在项目中设置,这一篇先讲解一下如何在GE里面使用GameplayTag标签。 之前我在第十一章节中 11. UE5 RPG使用GameplayEffect修改角色属性(二)介绍了一些GE的属性,在UE 5.3版本中,修改的配置方式…

药店在线客服机器人的设计与开发

摘要 随着信息技术的快速发展和人工智能领域的不断进步,药店在线客服机器人已经成为现代药店服务模式中不可或缺的一部分,这种机器人技术通过模拟人类客服代表,能够提供24/7的咨询服务,从而大幅提高服务效率和顾客满意度&#xff…

集合系列(二) -List接口详解

一、List简介 List 的数据结构就是一个序列,存储内容时直接在内存中开辟一块连续的空间,然后将空间地址与索引对应。 以下是List集合简易架构图 由图中的继承关系,可以知道,ArrayList、LinkedList、Vector、Stack都是List的四个…

软件设计和体系结构

软件设计和体系结构 一、引言 软件 定义:一系列按照特定顺序组织的计算机数据、指令的集合 特点: 软件不是生产制造,是设计开发软件不会磨损和老化软件需要根据实际情况进行定制开发 软件设计的基本原则 抽象方法 过程抽象:是指…

进程和ELF文件

程序的二进制格式: 关联知识:GCC编译原理与使用-CSDN博客 linux二进制程序的严格格式:ELF(Executeable and Linkable format) 一 预处理,编译,汇编得到的.o文件,就是ELF的第一种类…

Altium Designer快速入门及项目实战教程之层次原理图PCB设计(七)

一、简介 层次PCB设计是电子工程领域中一项至关重要的任务,它涉及到电路板的各个层面的功能分配和布局规划。这一设计过程的关键在于如何合理安排每一层的功能和布局,以确保电路板的性能达到最佳状态,并同时保证其可靠性。 首先&#xff0c…

数据结构 第3章:栈与队列

文章目录 1. 栈1.1 栈的基本概念1.2 栈的基本操作1.3 栈的顺序存储实现1.4 栈的链式存储实现 2. 队列2.1 队列的基本概念2.2 队列的基本操作2.3. 队列的顺序存储实现2.4 队列的链式存储实现2.5 双端队列 3. 栈与队列的应用3.1 栈在括号匹配中的应用3.2 栈在表达式求值中的应用3…

6.JavaWebJDBC连接池、JDBCTemplate

目录 导语: 一、JDBC连接池概述 常见JDBC连接池: JDBC连接池的优点 二、JDBCTemplate介绍 JDBCTemplate的核心组件 JDBCTemplate的使用方法 JDBCTemplate的优点 结语: ​​​​​​​ 导语: 在Java数据库编程中&#xf…

macOS Monterey 12.7.4 (21H1123) Boot ISO 原版可引导镜像下载

macOS Monterey 12.7.4 (21H1123) Boot ISO 原版可引导镜像下载 3 月 8 日凌晨,macOS Sonoma 14.4 发布,同时带来了 macOS Ventru 13.6.5 和 macOS Monterey 12.7.4 安全更新。 本站下载的 macOS 软件包,既可以拖拽到 Applications&#xf…

Hive-技术补充-初识ANTLR

一、背景 要清晰的理解一条Hql是如何编译成MapReduce任务的,就必须要学习ANTLR。下面是ANTLR的官方网址,下面让我们一起来跟着官网学习吧,在学习的过程中我参考了《antlr4权威指南》,你也可以读下这本书,一定会对你有…

在idea中配置tomcat服务器,部署一个项目(下载教程加链接)

第一步:把Tomcat下载好 ww​​​​​​​Apache Tomcat - Welcome! 链接如上:进去后在左边找到Tomcat8点击进去后 找到图下内容 第二步: 打开这个文件点击bin进去 会出现一个黑色框框,也就是服务器 完成后就可以在浏览器输入…

【C++】实现红黑树

目录 一、认识红黑树1.1 概念1.2 定义 二、实现红黑树2.1 插入2.2 与AVL树对比 一、认识红黑树 1.1 概念 红黑树是一个二叉搜索树,与AVL树相比,红黑树不再使用平衡因子来控制树的左右子树高度差,而是用颜色来控制平衡,颜色为红色…

Keil笔记(缘更)

Keil 一、使用Keil时可能会出现的问题1.Project框不见了2.添加文件时找不到3.交换文件位置4.main.c测试报1 warning 二、STLINK点灯操作1.配置寄存器进行点灯2.使用库函数进行点灯 3.GPIO1.LED闪烁 一、使用Keil时可能会出现的问题 1.Project框不见了 view->Project Windo…