「聊设计模式」之 设计模式的前世今生

news2024/12/24 20:34:52

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅!


目录:

  • 一、什么是设计模式
    • 设计模式的定义
    • 设计模式的作用
  • 二、设计模式的发展历程
    • 设计模式的起源
    • 设计模式的发展阶段
  • 三、设计模式的分类
    • 创建型模式
    • 结构型模式
    • 行为型模式
  • 四、常用的设计模式
    • 工厂模式
    • 单例模式
    • 装饰器模式
    • 代理模式
    • 观察者模式
    • 策略模式
    • 模板方法模式
  • 五、设计模式的应用实例
    • 设计模式在软件开发中的应用实例
    • 设计模式在开源框架中的应用实例
  • 六、设计模式的优缺点
    • 设计模式的优点
    • 设计模式的缺点
  • 七、设计模式的未来发展
    • 设计模式的趋势
    • 设计模式的未来发展方向
  • 八、结语
  • ☀️建议/推荐你
  • 📣关于我

一、什么是设计模式

设计模式是指在软件开发中常用的一些解决问题的方法和思路。设计模式旨在提高软件系统的可维护性、可扩展性、可重用性和灵活性。本文将介绍设计模式的定义、作用、发展历程、分类、常用的设计模式、应用实例、优缺点、未来发展趋势以及结语。

设计模式的定义

设计模式是在软件开发中,针对某类问题所提出的最佳解决方案。它描述了在特定环境下,应该采用哪种解决方案来解决该问题,以及如何协调各个类的协同工作。

设计模式的作用

设计模式可以提高软件系统的可维护性、可扩展性、可重用性和灵活性,同时可以降低软件系统的复杂度和耦合度,提高软件系统的可读性和可理解性。

二、设计模式的发展历程

设计模式的起源可以追溯到上世纪80年代,GOF(四人帮)在《设计模式:可复用面向对象软件的基础》一书中提出了23种设计模式。设计模式的发展可以分为三个阶段:模式的发现阶段、模式的总结阶段和模式的应用阶段。

设计模式的起源

设计模式的发展阶段

三、设计模式的分类

设计模式可以分为三类:创建型模式、结构型模式和行为型模式。创建型模式主要关注对象的创建过程;结构型模式主要关注对象之间的组织方式;行为型模式主要关注对象之间的交互方式。

创建型模式

结构型模式

行为型模式

四、常用的设计模式

常用的设计模式包括工厂模式、单例模式、装饰器模式、代理模式、观察者模式、策略模式和模板方法模式等。

工厂模式

单例模式

装饰器模式

代理模式

观察者模式

策略模式

模板方法模式

五、设计模式的应用实例

设计模式在软件开发中有很多应用实例,比如MVC框架、Spring框架、Hibernate框架等。

设计模式在软件开发中的应用实例

设计模式在开源框架中的应用实例

六、设计模式的优缺点

设计模式的优点是可以提高软件系统的可维护性、可扩展性、可重用性和灵活性,同时可以降低软件系统的复杂度和耦合度,提高软件系统的可读性和可理解性;缺点是设计模式可能会增加代码的复杂度,并且需要牢记所有设计模式的细节和使用场景。

设计模式的优点

设计模式的缺点

七、设计模式的未来发展

设计模式的趋势

设计模式的未来发展方向

设计模式的未来发展趋势是更加注重软件系统的高效性和可靠性,并且将会涌现出更多的设计模式,以应对不断增加的软件开发需求。

八、结语

设计模式是软件开发中非常重要的一部分,掌握设计模式能够提高开发效率和软件系统的质量,对于软件开发人员来说是必不可少的技能之一。

☀️建议/推荐你


  如果想系统性的全面学习设计模式,建议小伙伴们直接毫无顾忌的关注这个专栏《聊设计模式》,无论你是想提升自己的编程技术,还是渴望更好地理解代码背后的设计思想,本专栏都会为你提供实用的知识和启发,帮助你更好地解决日常开发中的挑战,将代码变得更加优雅、灵活和可维护!

📣关于我


我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

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

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

相关文章

Caddy Web服务器深度解析与对比:Caddy vs. Nginx vs. Apache

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

QT---day2---9.18

完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮…

vue antv g6 编辑器

第一:官方推荐代码 (下载后最好删除eslint(可以用第二个),再进行install) https://github.com/claudewowo/welabx-g6https://download.csdn.net/download/qq_30940855/88343559?spm1001.2014.3001.5501 …

RK3568驱动指南|第五篇 中断-第42章 软中断实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

MySQL数据库的explain关键字之type字段详解

这篇文章主要介绍一下mysql数据库常用的sql优化时使用的explain/desc关键字中,执行结果的type字段的取值。 目录 数据准备 const eq_ref ref range index all type字段的值主要有以下7种:其中system的性能最高,但是很难遇到&#xff0…

Spring实例化源码解析之ConfigurationClassParser(三)

前言 上一章我们分析了ConfigurationClassPostProcessor的postProcessBeanDefinitionRegistry方法的源码逻辑,其中核心逻辑do while中调用parser.parse(candidates)方法,解析candidates中的候选配置类。然后本章我们主要分析ConfigurationClassParser的…

linux服务器部署项目

1.linux安装配置JDK 以Java1.8为例,下载安装包 将安装包提交到服务器中并解压 tar -zxvf your_file.gz 修改/etc/profile文件 vi /etc/profile 文件中添加两条 export JAVA_HOME/path/to/your/java export PATH$JAVA_HOME/bin:$PATH 输入指令刷新文件 source /etc…

Python150题day08

2.基础语法篇 2.1 if 条件句 ①单个条件分支 使用input函数接收用户的输入,如果用户输入的整数是偶数,则使用print函数输出"你输入的整数是:{value],它是偶数”,[value]部分要替换成用户的输入。 解答: value input("请输⼊⼀…

java 阿里云上传照片

获取对象 Resourceprivate ALiYunConfig aLiYunConfig;代码配置类 import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;/*** 描述:** author zhaofeng* date 2023-09-05*/ D…

数字孪生技术如何提升工厂生产效率?

数字孪生技术是一项引领工业界数字化转型的创新力量。随着工业4.0时代的到来,制造业正经历着巨大的变革,数字孪生技术在这个变革中发挥了关键作用。它不仅仅是一种技术,更是一种理念,将现实世界与数字世界相结合,为工厂…

2022年3月13日安装和启动ActiveMQ遇到问题

今天我学习了一天周阳老师的ActiveMQ课程,讲的还不错,但是,碰到一个问题就是: 我Linux里可以通过 http://IP地址:8161/访问到ActiveMQ的一个界面,并且能够登录成功,但是呢,windows里面无法访问到…

python 串口发送图片给arduino

python 代码 import serial import threading import time from PIL import Image from PIL import ImageSequence## im.show()##print(img) ## ####img b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00…

单例模式有几种写法?

作者:猴子007 选自:https://monkeysayhi.github.io “你知道茴香豆的‘茴’字有几种写法吗?” 纠结单例模式有几种写法有用吗?有点用,面试中经常选择其中一种或几种写法作为话头,考查设计模式和coding styl…

springboot2.7.15+thymeleaf

如下使用了thymeleaf的基础应用&#xff1a;th:text, th:each, th:if, th:unless, th:value等标签的使用 页面效果&#xff1a;未登录状态 登录状态&#xff1a; 如下的所有html放在templates 下&#xff0c; 配置文件不需要做任何配置 只需要在pom.xml中增加 <dependen…

记一次 .NET 某仪器测量系统 CPU爆高分析

一&#xff1a;背景 1. 讲故事 最近也挺奇怪&#xff0c;看到了两起 CPU 爆高的案例&#xff0c;且诱因也是一致的&#xff0c;觉得有一些代表性&#xff0c;合并分享出来帮助大家来避坑吧&#xff0c;闲话不多说&#xff0c;直接上 windbg 分析。 二&#xff1a;WinDbg 分析…

【ODPS新品发布第2期】实时数仓Hologres:推出计算组实例/支持JSON数据/向量计算+大模型等新能力

阿里云ODPS系列产品以MaxCompute、DataWorks、Hologres为核心&#xff0c;致力于解决用户多元化数据的计算需求问题&#xff0c;实现存储、调度、元数据管理上的一体化架构融合&#xff0c;支撑交通、金融、科研、等多场景数据的高效处理&#xff0c;是目前国内最早自研、应用最…

七、定时器类的编写与解析 —— TinyWebServer

定时器类的编写与解析 —— TinyWebServer 一、前言 定时器非常好写。就是链表加定时函数。搞懂他的作用就成。 定时器的作用是什么&#xff1f;什么是回调函数&#xff1f;用到的函数是什么&#xff1f; 二、问题回答 Ⅰ、定时器的作用是什么&#xff1f; 处理非活跃的连…

Mybatis自动映射Java对象 与 MySQL8后的JSON数据

文章目录 Mybatis自动映射Java对象 与 MySQL8后的JSON数据1.转化成为正常Json类型1.1 JsonTypeHander1.2 ListJsonTypeHandler 负责List<T> 类型1.3 实体类1.4 mapper1.5 测试类 2. 存储为携带类型的Json Mybatis自动映射Java对象 与 MySQL8后的JSON数据 1.转化成为正常…

OPTEE Ftrace函数跟踪

安全之安全(security)博客目录导读 OPTEE调试技术汇总 目录 一、序言 二、Ftrace配置 三、Ftrace使用 四、Ftrace典型输出 一、序言 本节描述如何使用ftrace为TA生成函数调用图。该名称来自具有类似目的的Linux框架&#xff0c;但是OP-TEE ftrace非常具体…

前端代码统计工具之cloc介绍

目录 一、安装 二 使用命令cloc path&#xff1a; 使用cloc工具可以很好的统计出前端的代码量&#xff0c;经过亲身实践真的很棒。 一、安装 安装命令 pnpm add cloc -g 二 使用命令cloc path&#xff1a; cloc ./ 如果报错&#xff1a; perl 不是内部或外部命令的问…