java23种设计模式之简介

手把手教你用Python分析OpenFAST仿真结果:pyDatView处理.out文件与数据可视化技巧 本文详细介绍了如何使用Python中的pyDatView工具分析OpenFAST仿真结果,包括数据加载、质量检查、时域与频域分析、多工况对比及自动化报告生成。通过优化技巧和可视化方法,帮助工程师高效处理.out文件,提升风机性能分析的准确性和效率。 阅读详情

设计模式(Design Patterns)

说白了就是前人智慧的结晶,他们为了减少后人做太多重复工作浪费宝贵的生命,通过分类编目,总结自己代码设计经验,给出来的一套可以被反复使用的模板。

使用设计模式,不仅可以提高代码的复用率,也更易于被他人理解,代码的可靠性更高。

设计模式使代码编制真正工程化,项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的本质原因。

大二就开始接触过设计模式,那时候用最多的就是单例模式。两年过去了,也接触到了其他不同的设计模式,但是没有系统的专门学过总结过,就算用过也没什么体会,甚至都不知道这种方式就是XX设计模式都有可能。知识就是在不断地遗忘中再努力的捡回来。为了捡的更多,就要有效的拖延遗忘。写下来,应该是最好的方式之一。不管是自己的大白话阐述一遍,还是看过别人无数的博文之后的一些复述,我相信这都是能有效降低遗忘的速度的。接下来我尽量至少一天一更新一种设计模式,以理论与实践相结合的方式来详细介绍Java中23种设计模式的概念,应用场景等情况,并结合他们的特点及设计模式的原则进行分析。希望不仅仅是我一个人为了拖延遗忘而自言自语,也能给其他读者带来一点收获,不过本人功力有限,有错的地方希望大家踊跃反馈!

无论是玩什么游戏,先了解一下游戏规则很重要,学习也一样。今天就重点给设计模式做个详细的简介,先了解规则,然后掌握它,最后控制它……最后的最后,学完你就succeed了!

一、设计模式的分类

总体来说设计模式分为三大类(创建型、结构型、行为型):

创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:(设计模式之间的关系图)




二、设计模式的六大原则(开闭、里氏代换、依赖倒转、接口隔离、最少知道、合成复用)

1、开闭原则(Open Close Principle)

开闭原则:对扩展开放,对修改关闭。

解释:在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔(Hot plugging)的效果。

目的:提高程序的扩展性,易于维护和升级。

想要达到这样的效果,需要使用接口和抽象类,后面的具体学习中我会重点介绍每个模式的接口和抽象类。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。

里氏代换原则:任何基类可以出现的地方,子类一定可以出现。

LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

里氏代换原则是对“开-闭”原则的补充,实现“开-闭”原则的关键步骤就是抽象化。基类与子类的继承关系就是抽象化的具体实现。

里氏代换原则是对实现抽象化的具体步骤的规范。

3、依赖倒转原则(Dependence Inversion Principle)

开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体类。

4、接口隔离原则(Interface Segregation Principle)

使用多个隔离的接口,比使用单个接口要好。降低类之间的耦合度。

设计模式的本质目的:降低依赖,降低耦合。

5、迪米特法则(最少知道原则)(Demeter Principle)

一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

尽量使用合成/聚合的方式,而不是使用继承。


FreeRTOS实战:如何避免HAL_Delay在高优先级中断中的坑(附TIM6配置指南) 本文深入剖析了在STM32 FreeRTOS项目中,于高优先级中断内调用HAL_Delay函数导致系统假死的根本原因——SysTick时基被FreeRTOS占用且优先级最低。文章提供了治本方案:通过配置TIM6作为独立且最高优先级的HAL时基,实现与FreeRTOS系统心跳的解耦,并附上详细的CubeMX配置与代码移植指南,确保系统实时性与稳定性。 阅读详情

相关推荐

别再为下载速度发愁了!手把手教你给qBittorrent/Transmission添加最新可用Tracker(附2024年实测地址清单)

本文提供2024年BT下载加速实战指南,详细解析Tracker工作原理与速度瓶颈,手把手教你为qBittorrent/Transmission添加最新可用Tracker,并附实测地址清单。通过优化配置和精选Tracker列表,显著提升下载速度和稳定性,解决连接延迟和peer数量限制问题。

weixin_28481133的博客 1262

Java23种设计模式简介

Java23中设计模式简介23中设计模式又称之为GOF23,即Group of four 23,主要分为以下三大类: - 创建型模式 - 结构型模式 - 行为型模式

大白能的博客 437

基于N32G003的PMBus从机协议栈设计与STM32F103模拟I2C主机通信实战

本文详细介绍了基于N32G003微控制器设计PMBus从机协议栈,并与STM32F103模拟I2C主机进行通信的实战方案。重点阐述了中断驱动架构、命令解析、CRC8优化及超时恢复机制,实现了在70kHz速率下稳定可靠的工业电源管理通信,适用于服务器电源、通信基站等成本敏感应用场景。

numpy6sculptor的博客 919

关于Java中的23种设计模式简介

简介 设计模式(Design Pattern),是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 设计模式于己、于他人、于系统都是多赢的,设计模式使代码编制真正工程化。设计模式是软件工程的基石,如同大厦的一块块砖石一样使代码编制真正工程化。 只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每...

Kobe Bryant 392

深度残差网络的无人机多目标识别

深度残差网络的无人机多目标识别 人工智能技术与咨询 来源:《图学学报》。作者翟进有等 摘要:传统目标识别算法中,经典的区域建议网络(RPN)在提取目标候选区域时计算量大,时间复杂度较高,因此提出一种级联区域建议网络(CRPN)的搜索模式对其进行改善。此外,深层次的卷积神经网络训练中易产生退化现象,而引入残差学习的深度残差网络(ResNet),能够有效抑制该现象。对多种不同深度以及不同参数的网络模型进行研究,将两层残差学习模块与三层残差学习模块结合使用,设计出一种占用内存更小、时间复杂度更低的新型多捷.

m0_62870606的博客 3111

SpringDoc 基本使用指南

SpringDoc 凭借零配置启动注解简洁和深度兼容 Spring 生态的优势,已成为 Spring Boot API 文档的首选工具。自动化- 减少手动维护文档的成本;标准化- 严格遵循 OpenAPI 3 规范;可扩展- 分组、安全控制灵活适配复杂项目。访问即可查看交互式文档(默认路径)

墨鸦的博客 1万+

Java中23种设计模式简介

设计模式有三种类型,分别为创建型、结构型、行为型。 (一)创建型 1)Singleton,单例模式:一个类只有一个实例,提供了一个访问它的全局变量。 2)Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,无须指定具体的类。 3)Factory Method,工厂方法:提供一个创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类

披着羊皮的狼的博客 601

USB2.0物理层实战:手把手教你用示波器抓取D+/D-信号(附波形分析)

本文是一份针对硬件工程师的USB2.0物理层信号调试实战指南。文章详细讲解了如何使用示波器捕获和分析D+/D-差分信号,从基础设置、核心信号状态解读,到信号完整性分析与常见问题排查,手把手教你定位USB通信故障。内容涵盖USB2.0协议物理层关键概念,并附有基础解码思路,旨在提升工程师的底层调试能力。

s8t9u0v1w的博客 451

JAVA 23种设计模式简介

设计模式(Design Patterns) ——可复用面向对象软件的基础  设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式的分类  创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。  结构型模式,共七种:适配器模式、装饰器模式、代

xlxxcc的专栏 8052

【IoT】 产品设计之结构设计:如何设计产品按键

1、硅胶按键功能实现有两种接触方式 1)硅胶按键按压在DOME片(锅仔片)上 通常用在手机、儿童手表手机、防水手机等防水设备上。 2)硅胶按键增加导电基,一种黑色的导电碳粒,实现回路导电 通常用在遥控器、电脑键盘、特殊设备上。 两种方式结构设计原理是一样的,按键的固定与配合间隙与行程要确保好。 2、硅胶遥控器按键的结构方式(导电基) 按键帽为大颗粒实心的,触点为黑色导电基,通过压注成型融合为一体,那么这种按键结构设计时需要注意那些呢? 最主要的是按键按压回弹的手感,由于没有DOME片实现

产品线负责人 8670

X-AnyLabeling-main标注YOLO关键点POSE

同一物体的框和点的 群组编号 要相同。代表这些点和方框是同一物体上的。标注方框之后记得把后面的。顺序要和你标注的顺序一致。写入1,而且之后的点的。配置导出文件.yaml。

qq_53545309的博客 2108

JAVA23种设计模式简介

JAVA23种设计模式简介

longtimetoc的博客 679

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理精讲,阐述滑模观测器核心思想和PLL的作用;2)系统架构全景图展示;3)Simulink建模全流程,从基础FOC框架到SMO和PLL模块的实现;4)关键参数整定指南和工程实践要点;5)仿真结果分析及常见问题解决方案。该方法可有效替代机械传感器,降低成本并提高可靠性,适用于空调压缩机、电动汽车水泵等工业场景。文章还提供了详细的调试建议和动手实践指导。

MHD0815的博客 83

java常见23种设计模式简介

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34192816的博客 131

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

GOF以及java的23种设计模式简介

      Design Patterns: Elements of Reusable Object-Oriented Software(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为“四人组(Gang of Four)”,而这本书也就被

独自登高楼 望断天涯路 1733

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

关于Java中的23种设计模式简介(超详细)

23种设计模式 文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基

liubs_的博客 3022

Java23种设计模式-设计模式简介

引用知乎文章菜鸟教程设计模式是在软件设计中反复出现的问题的通用解决方案。它们是经过多次验证和应用的指导原则,旨在帮助软件开发人员解决特定类型的问题,提高代码的可维护性、可扩展性和重用性。设计模式是一种抽象化的思维方式,可以帮助开发人员更好地组织和设计他们的代码。它们提供了一种通用的框架,可以用于解决各种不同的软件设计问题。设计模式不是完整的代码,而是一种描述问题和解决方案之间关系的模板。设计模式并不是一成不变的法则,而是根据不同的问题和情境来决定是否使用以及如何使用。

苏叶的专栏 570

一、Java 23 种设计模式简介

一、23种设计模式分类: 二、设计模式的六大原则:   1、开闭原则(Open Close Principle):对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。   2、里氏代换原则(Liskov Substitution Principle):任何基类可以出现的地方,子类一定可以出现。开闭原则的关键步骤就是抽象化,而基类与子类...

weixin_30823683的博客 105

Java 23种设计模式-功能简介

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。

qq_37782946的博客 186

Java中的23种设计模式简介

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

太多的虚幻 5755

Java设计模式全面详解:从基础到高级的23种模式简介

设计模式是软件设计中解决常见问题的典型方案,分为创建型、结构型和行为型三大类。创建型模式主要处理对象创建机制,包括单例模式、工厂方法模式、抽象工厂模式和建造者模式等。单例模式确保一个类只有一个实例,工厂方法模式通过子类决定实例化哪个类,抽象工厂模式创建相关对象的家族,而建造者模式则将复杂对象的构建与表示分离。这些模式通过预定义的解决方案,提高了代码的可维护性和可扩展性。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 625

Java 23种设计模式(简介)

通常,一个设计模式描述了一个被证实可行的方案。这些方案非常普遍,是具有完整定义的最常用的模式。一般模式有4个基本要素:模式名称(pattern name)、问题(problem)、解决方案(solution)、效果(consequences)。 常见的Java设计模式有以下23种: 1、抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相

liangrockman的专栏 1526
上一篇: android:configChanges
下一篇: java23种常用设计模式之单例模式(Singleton)
freedom1993
博客等级 码龄12年 25粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值