设计模式总览

设计模式系列(01):总览与引导 本文为设计模式系列的开篇,旨在为读者提供设计模式的整体认知框架。文章首先介绍了设计模式的基本概念,强调其作为软件设计中反复出现问题的解决方案,能够提升系统的可维护性和可扩展性。接着,文章探讨了UML(统一建模语言)在设计模式中的应用,详细说明了UML图类型及其在表达设计模式结构中的作用。此外,文章还解释了面向对象设计中的关键术语,如聚合、组合、依赖等,并介绍了PlantUML工具的使用及其在UML建模中的优势。最后,文章概述了面向对象设计的六大原则(SOLID),并简要提及了设计模式的分类及其典型应用场景, 阅读详情

9条设计原则

  • SOLID
    • SRP 单一职责原则:个类或者模块只负责完成一个职责
    • OCP 开闭原则:软件实体(模块、类、方法等)应该“对扩展开放、对修改关闭”。添加一个新的功能应该是,在已有代码基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等)。
    • LSP 里式替换原则:是用来指导继承关系中子类该如何设计的,子类的设计要保证在替换父类的时候,不改变原有程序的逻辑以及不破坏原有程序的正确性。
    • ISP 接口隔离原则:客户端不应该被强迫依赖它不需要的接口
    • DIP 依赖倒置原则:高层模块(high-level modules)不要依赖低层模块(low-level)
  • DRY 原则:不要写重复的代码。
  • KISS 原则:尽量保持简单。
  • YAGNI 原则:不要做过度设计
  • LOD 法则:不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口(也就是定义中的“有限知识”)

23种经典设计模式

1.创建型

  • 常用:
    • 单例模式:解决资源冲突(多线程);全局唯一实例;
    • 工厂模式:解决创建对象时,需要组合多个其他类对象,做各种初始化操作时的复杂场景;Spring IOC
    • 建造者模式:对象初始化需要一次性初始化好所以的成员变量
  • 不常用:
    • 原型模式:对象的创建成本大,而一个类的不同对象之间差别不大,可以进行复制拷贝节省创建时间

2.结构型

  • 常用:
    • 代理模式:用于避免非业务逻辑对核心代码的侵入:Spring AOP
    • 桥接模式:一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展
    • 装饰者模式:装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承。它主要的作用是给原始类添加增强功能
    • 适配器模式:一般来说,适配器模式可以看作一种“补偿模式”,用来补救设计上的缺陷
  • 不常用:
    • 门面模式:门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。
    • 组合模式:将一组对象组织成树形结构,将单个对象和组合对象都看做树中的节点,以统一处理逻辑,并且它利用树形结构的特点,递归地处理每个子树,依次简化代码实现
    • 享元模式:如果这些重复的对象是不可变对象,我们就可以利用享元模式将对象设计成享元,在内存中只保留一份实例,供多处代码引用;Java String Integer

3.行为型

  • 常用:
    • 观察者模式(发布订阅):行为型模式是将不同的行为代码解耦,具体到观察者模式,它将观察者和被观察者代码解耦;Kafka
    • 模板模式:模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤;Java Thread
    • 策略模式:利用它来避免冗长的 if-else 或 switch 分支判断
    • 职责链模式:将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止:Spring Web Filter
    • 迭代器模式:迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一;Java容器遍历
    • 状态模式:一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中
  • 不常用:
    • 访问者模式:访问者模式允许一个或者多个操作应用到一组对象上,设计意图是解耦操作和对象本身,保持类职责单一、满足开闭原则以及应对代码的复杂性。
    • 备忘录模式:在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。
    • 命令模式:命令模式将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、撤销等(附加控制)功能。
    • 解释器模式:解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法。
    • 中介模式:中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。
总览设计模式 - 汇总篇,设计模式内容导航 文章目录总览设计模式 - 汇总篇,设计模式内容导航1、设计模式分类2、创建型模式3、结构型模式4、行为型模式5、J2EE的设计模式6、设计模式的六大原则 总览设计模式 - 汇总篇,设计模式内容导航 未完内容持续更新 1、设计模式分类 设计模式有一个大的分类,主要是三类 1、创建型 2、结构型 3、行为型 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件... 阅读详情

相关推荐

人工智能(AI)简史:推动新时代的科技力量

人工智能(AI,Artificial Intelligence)是计算机科学的一个分支,旨在研究和开发可以模拟、扩展或增强人类智能的系统。它涉及多种技术和方法,包括机器学习、深度学习、自然语言处理(NLP)、计算机视觉、专家系统等。

qq_17153885的博客 1万+

DesignPattern设计模式-总览

设计模式总览及设计模式六大原则

Fuck Job interview! 445

卸载Office 16 Click-to-Run Extensibility Component详细步骤

卸载Office 16 Click-to-Run Extensibility Component详细步骤 第一步:按住键盘上的“Win+R”,打开运行窗口 在运行窗口输入“Installer”回车,打开Installer文件夹 第二步:在Installer文件夹红框最右侧,即“大小”后面,右击选择“其他”,找到“主题”,勾选,点击“确定”,添加主题列成功 第三步:在“主题”列找到“Office 16 Click-to-Run Extensibility Component

M_try的博客 3万+

游戏开发中的设计模式——总览

最近在学习关于游戏开发中的设计模式方面的知识,想记录下来和大家一起分享,同时也方便以后自己的回味。在此系列的博文中,我不会刻意强调关于设计模式方面的基础概念和理论,而重点是设计模式在游戏开发中的简单应用。因为设计模式在软件设计行业涉及到的范围很广,适用性也很强。如果是设计模式的小白,可以自行百度学习,或者推荐以下连接进行学习: https://www.zhihu.com/question/1955

Say__Yes的博客 3209

72-dify案例分享-揭秘!如何用 Dify 实现多语言 PDF 文档原格式翻译

本文围绕 Dify 1.6 + 版本,演示搭建 PDF 文档翻译 Agent:配置 MCP 服务、构建 Agent 并以 URL 传文件测试,实现高效翻译,展现 MCP 跨工具复用与简化集成的优势,助力 AI 应用开发。

个人技术 2285

SAP MTS计划策略40实战:如何配置‘带最终组装的计划‘提升定制化生产效率

本文深入解析SAP计划策略40(带最终组装的计划)的核心机制与实战配置。该策略通过“需求消耗”与“组装灵活性”,有效融合按库存生产(MTS)与按订单生产(MTO)的优势,帮助制造企业在保持通用组件库存稳定的同时,快速响应客户的定制化需求,从而提升生产效率与客户满意度。

ruby5的博客 966

九大设计模式总览类图

qq_20376983的博客 245

【测开求职】面试题:操作系统 吐血整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。涵盖考研范围内的所有知识内容,读者可以先查看上面的链接走一遍操作系统的整体框架结构。其中,重点难点以及易混淆的知识点,笔者用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。另外操作系统在校招中有非常明显的重点,一般情况下只会考察进程管理,内存管理,和设备管理,且这三者考察频率依次递减,文件管理基本不会考察。

vector的博客 7908

23种设计模式总览

23种设计模式总览

来自上海的这位朋友 939

基于深度学习的茶叶等级检测识别系统:YOLOv10 + UI界面 + 数据集

YOLOv10是YOLO系列的最新版本,继承了YOLO模型的优点,并对速度和精度进行了优化。YOLOv10在目标检测中使用卷积神经网络(CNN)作为基础,通过改进网络结构和优化训练策略,实现了在更低的延迟下进行高精度的目标检测。本文详细介绍了基于YOLOv10的茶叶等级检测与识别系统的设计与实现过程。我们从数据集准备、模型训练与推理、UI界面设计等多个方面进行了详细讲解,并给出了相应的代码实现。通过本系统,我们可以高效地自动检测茶叶的等级,并通过UI界面直观地展示结果。

YOLO 763

广东省道路工程检测练习试题(判断题)真题

按下式计算小于某粒径颗粒质量百分数:X=(A/B)x100( )49.、挖坑灌砂法适用于在现场测定基层(或底基层)、砂石路面及路基土的各种材料压实层的密度和压实度,但不适用于填石路堤等有大孔洞或大孔隙材料的压实度检测。95.挖坑灌砂法适用于在现场测定基层(或底基层)、砂石路面及路基土的各种材料压实层的密度和压实度,但不适用于填石路堤等有大孔洞或大孔隙材料的压实度检测( )107.以干密度 pd 为纵坐标,含水率w为横坐标,绘 pd-w 关系曲线,曲线上峰值点的纵、横坐标分别为最大干密度和最佳含水率( )

ZShy001238的博客 681

设计模式-23种设计模式总览

qq_35328937的博客 202

基于simulink的能量管理策略的场景实例:混合动力电动汽车(HEV)的能量回收与分配策略

本文以混合动力电动汽车(HEV)为研究对象,通过Simulink建模详细演示了能量管理策略的设计与实现。内容涵盖HEV系统架构、核心组件工作原理,并分步骤指导搭建车辆动力学模型、动力系统组件模型和基于规则的能量管理策略。重点分析了制动能量回收与功率分配机制,通过仿真验证了逻辑门限策略在提升燃油经济性和维持电池SOC平衡方面的有效性。文章最后展望了更高级控制策略的应用前景,为HEV能量优化提供了完整的仿真研究框架。

xiaoheshang_123的博客 212

【设计模式】总览

一、设计模式分类 总体来说设计模式分为三大类: 1)创建型模式 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2)结构型模式 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 3)行为型模式 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 二、设计模式的...

极地大王章的专栏 330

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【JavaScript 设计模式】设计模式总览

目录1. 什么是设计模式?2. 设计原则概述3. 设计模式核心思想4. 设计模式分类 1. 什么是设计模式? 设计模式是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。它是为了可重用代码,让代码更容易的被他人理解并保证代码的可靠性。 就像是我们在做数学题的时候,已知直角三角形两边长,求另一边,我们会直接用勾股定理,而不会去证明为什么勾股定理是成立的。所以,设计模式实际上是“拿来主义”在软件领域的贯彻实践,它是一套现成的工具,拿来即用。 下面来看一下设计模式的设计原则。 2. 设计原则概述 设

公众号:前端充电宝 601

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

GoF设计模式——23种设计模式总览

本文是GoF设计模式系列的总览,介绍了23种经典设计模式的分类、核心思想及适用场景。设计模式分为三类:创建型(5种,如单例、工厂)、结构型(7种,如适配器、代理)和行为型(11种,如观察者、策略)。文章强调设计模式的核心价值在于管理复杂度,通过复用经验、统一语言和隔离变化来提高代码质量。同时指出模式应用需要灵活变通,理解六大设计原则(如开闭原则、依赖倒置)是掌握模式的关键。最后简要说明了创建型模式的典型代表及其应用场景。

多低调的博客 286

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

getinstance方法详解_二、设计模式总览及工厂模式详解

二、架构师内功心法之设计模式2.架构师内功心法之设计模式2.1.课程目标1、通过对本章内容的学习,了解设计模式的由来。2、介绍设计模式能帮我们解决哪些问题。3、剖析工厂模式的历史由来及应用场景。2.2.内容定位不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的 是解耦。设计模式天天都在用,但自己却无感知。我们把设计模式作为一个专题,主要是学习设计模式 是如何总结...

weixin_32452127的博客 507

01设计模式-总览

设计模式总览

weixin_46643875的博客 242
上一篇: 自制操作系统番外2:编程语言中函数参数的传递
_萧_
博客等级 码龄10年 55粉丝 157原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值