什么是设计模式,设计模式的分类和原则

STK与Matlab连接报错?手把手教你解决mexConnect函数执行问题(附完整避坑指南) 本文针对STK与Matlab连接时常见的“mexConnect函数执行”报错,提供了完整的诊断与解决方案。文章深入剖析了错误根源在于路径冲突或文件损坏,并手把手指导用户通过定位STK连接器文件、正确配置Matlab路径(包括使用addpath命令)以及执行初始化测试三步走策略,彻底解决问题。同时附上版本兼容性检查、安装避坑指南及构建稳健工作流的建议,帮助用户建立可靠的STK-Matlab联合仿真环境。 阅读详情

什么是设计模式

设计模式是我们在软件开发过程中,基于特定情况的下为一些重复性出现的问题提供的一个有效的解决方案。无论是在框架还是应用软件的开发中,设计模式的在被广泛的应用。

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

设计模式的分类

虽然设计模式只有23种,但是每一个设计模式都某一个可重复的设计问题提供了一套解决方案。根据他们的用途可以分为创建型,结构型和行为型三种。其中创建型模式主要用于描述如何创建对象,结构型模式主要用于描述如何实现类或对象的组合,行为型模式主要用于描述类或对象怎么交互以及怎么分配职责。在GoF23种设计模式中包含5种创建型设计模式,7种结构型设计模式和11种行为型设计模式。

创建型

1. 单例模式
2. 工厂方法模式
3. 抽象工厂模式
4. 原型模式
5. 建造者模式

结构型

1. 适配器模式
2. 桥接模式
3. 组合模式
4. 装饰模式
5. 外观模式
6. 享元模式
7. 代理模式

行为型

1. 职责链模式
2. 命令模式
3. 解释器模式
4. 迭代器模式
5. 中介者模式
6. 备忘录模式
7. 观察者模式
8. 状态模式
9. 策略模式
10. 模板方法模式
11. 访问者模式

设计模式的原则

单一职责原则(Single Responsibility Principle, SRP)

单一职责原则是最简单的面向对象设计原则,他用于控制类的粒度大小。单一职责原则意思是说一个类只负责一个功能领域的事情,如果一个类承担的职责越多,那么他的可复用性就越小,耦合性也会变高,但其中一个职责发生变化时,很可能也会导致其他职责的变化。单一职责是实现高内聚,低耦合的指导方针。

开闭原则(Open-Closed Principle, OCP)

开闭原则是面向对象的可复用性设计的基石。开闭原则意思是对扩展开放,对修改关闭。即实体应该在不修改原有代码的基础上进行扩展。这个实体可以是一个模块,一个由多个类组成的局部结构或一个独立的类。抽象化是开闭原则的关键。

里氏代换原则(Liskov Substitution Principle,LSP)

里氏替换原则意思是所有引用基类(父类)的地方必须能透明地使用其子类对象。在软件中将一个基类对象替换成他的子类对象,程序将不会产生任何错误喝异常,但是反之则不可以,如果一个软件实体使用的是一个子类对象的话,那么他不一定能够使用基类对象。里氏替换原则是实现开闭原则的重要方式之一。

在使用里氏替换原则时需要注意一下几点:

  1. 子类的所有方法必须在父类中声明,或子类必须实现父类中声明的所有方法。根据里氏替换原则,为了保证系统的扩展性,在程序中通常使用父类来进行定义,如果一个方法只存在子类中,在父类中不提供相应的声明,则无法在以父类定义的对象中使用该方法。
  2. 在使用里氏替换原则时尽量把父类设计为抽象类或接口,让子类继承父类或实现父接口,并实现父类中声明的方法,在子类实例替换父类实例时就可以很方便的扩展系统的功能。

依赖倒转原则(Dependency Inversion Principle, DIP)

如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一。依赖倒转原则意思是抽象不应该依赖于细节,细节应当依赖抽象,换言之,要针对接口编程,而不是针对实现编程。在实现依赖倒转原则时,我们需要针对抽象层编程,而将具体类的对象通过依赖注入的方式注入到其他对象中。

接口隔离原则(Interface Segregation Principle, ISP)

接口隔离原则意思是使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些他不需要的接口。当一个接口太大时,我们需要将他分割成一些更小的接口,使用该接口的客户端只需要知道与之相关的方法。每一个接口应该只承担相对独立的角色。

合成复用原则(Composite Reuse Principle, CRP)

复用原则意思是尽量使用对象组合,而不是继承来达到复用的目的。就是在一个新对象里通过关联关系来使用一些已有的对象,使之成为新对象的一部分,新对象通过委派调用已有对象的方法达到使用功能的目的。

在面向对象设计中,可以通过两种方法在复用已有的实现,一种是通过组合的关系,一种是继承。但是应该优先考虑使用组合的方式,这样可以降低类之间的耦合,一个类的变化对其他类造成的影响就相对较少,其次在考虑使用继承的方式,并且需要严格遵守里氏替换原则,有效使用继承会有助于问题解决,滥用继承反而会增加系统复杂度。

通过继承来复用的主要问题在于破坏系统的封装性,因为继承会将基类的实现暴露给子类,如果基类发生改变,那么子类的实现也不得不发生改变。

迪米特法则(Law of Demeter, LoD)

迪米特原则意思是一个实体应当尽可能少的与其他实体发生相互作用。如果一个系统符合迪米特原则,那么当其中某个模块发生改变时,就会尽量少的影响其他模块。该原则可以降低系统的耦合度。

图机器学习(2)——图的可视化 图结构可通过图形化方式直观呈现。节点通常用圆形表示,边则用连接线表示。然而当节点和边数量增加时,绘制清晰的图形表示可能会变得相当困难,这主要源于节点在二维坐标系中的布局问题。对于包含数百个节点的图,手动指定每个节点的坐标显然不切实际。在本节中,我们将介绍如何在不指定每个节点坐标的情况下绘制图形。我们将利用两种不同的解决方案:networkx 和 Gephi。 阅读详情

相关推荐

LaTeX双栏浮动结构实战:用dblfloatfix解决跨栏图表排版难题

本文深入探讨了LaTeX双栏浮动结构在学术论文排版中的常见问题,特别是IEEE会议论文中的跨栏图表定位难题。通过介绍dblfloatfix包的整合解决方案,帮助用户实现精准的底部定位和浮动顺序保持,提升排版效率与质量。

weixin_30872499的博客 442

OOP七大法则

开闭原则(The Open/Closed Principle,OCP) 该原则规定“软件中的对象(类、模板、函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一实体是允许在不改变它的源代码的前提下变更它的行为。 **对扩展开放,对修改关闭。**在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。是程序扩展性好,易于维护和升级。 要达到这样的效果,我们需要使用接口和出抽象类。 例如在这里,使用抽象的Animal来代表所有的动物,动物都有吃的行为,但不同动物不一样。当发现新

不想起床的小张的博客 507

Tesseract-Ocr踩坑下载以及进行检验

1 OCR,即Optical Character Recognition:光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。下载完成后进行解压找到这两个,然后复制到之前下载Tesseract-Ocr的tessdata文件下。可能会出现报错说chi下载的问题咱们不用管继续ok让它先下载完毕,后续会有下载chi的步骤。四、检验tesseract使用(将以下图片进行下载我这里将以下图片命名为3.png)我这里选的是2024年的版本如果下载不了;4 在安装的时候(找到下载的exe文件,双击)

m0_51428325的博客 1915

《设计模式解析》第5章 设计模式介绍

第5章 设计模式介绍 概述       本章介绍设计模式的概念。        在本章, l           我讨论设计模式在建筑学中的起源以及它们如何被应用于软件设计的学科中。 l           我讨论学习设计模式的动机。        设计模式是面向对象技术的最前沿部分。面向对象的分析工具、书籍以及研讨会都包含着设计模式。有

DWATER 1995

【清风数学建模笔记】第十一讲:时间序列分析

【清风数学建模笔记】第十一讲:时间序列分析

manerzi的博客 832

NFT图片批量合成及稀有度计算工具

一、制作背景 -当前NFT作品制作的大多方式都是使用部件拼接的形式,然后从大量的可能性结果取优; 二、解决问题 拼接合成的组合数量十分巨大,手工合成费时费力; 合成中对各个部件的使用次数不容易控制,部位出现的概率对作品的稀有度及评分影响较大; 对于生成的作品各个部位的信息(包括来源和使用率)统计繁琐,不利于对作品的介绍中体现; 三、程序功能介绍 1、功能自定义部位稀有度批量合成NFT作品 步骤一:创建各个合成部件文件夹,将图片放到文件夹内 步骤二:软件上设置各个部件对于的图片文件夹及出现的概率 步骤二

Keeping111的博客 4638

DesignPattern_Java:设计模式分类和设计原则

设计模式分类: 创建型: 单例模式(Singleton Pattern) 工厂方法模式(Factory Pattern) 抽象工厂模式(Abstract Factory) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 结构型: 代理模式(Proxy) 装饰模式(Decorator) 适配器模式(Adapter) 组合模式(Com

Anonymous 1810

ChromeOS安装教程

ChromeOS,是基于Linux内核研发的ChromiumOS开源系统的闭源系统,最大的特色就是内置了Chrome浏览器,早期主要以Web云端应用程序为主,后来逐渐引入了Android子系统和Linux子系统。本文主要简述摸索的家用笔记本安装ChromeOS安装方法,供各位玩机朋友参考。

weixin_45751495的博客 8112

23种设计模式分类和原则

设计模式多,从整体认识更好理解记忆

水妖 1023

【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势!

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1017

C++(Qt)软件调试---内存分析工具Heob(26)

绝对最全面最详细的Heob使用说明。(图文并茂) 绝大部分的文章都说Heob是一个内存泄漏分析工具,其实Heob只是内存泄漏分析功能比较突出,实际上Heob可以分析很多内存问题。 Heob是一个Windows下检测缓冲区溢出(野指针、空指针、内存越界、重复释放、异常捕获等)和内存泄漏的工具,集成到Qt Creator中,功能强大,简单容易上手。

mahuifa的博客 4312

依赖倒转原则_设计模式的原则和分类

阅读过前面几篇文章的小伙伴对设计模式的分类和运用都有一定的认识和理解。本篇文章我们一起看看设计模式遵循的原则,以及有哪些分类。01设计模式的六大原则总原则:开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达...

weixin_39832965的博客 113

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

设计模式的分类和六大设计原则

设计模式设计模式分类按目的分类创建型/故事:结构型/故事:行为型/故事:按作用范围分类六大原则总原则:开闭原则定义为什么要采用开闭原则:单一职责原则 | Single Responsibility Principle,SRP.定义 | 每个类应该实现单一的职责优点难点建议里氏替换原则 | Liskov Substitution Principle,LSP.定义 | 只要有父类出现的地方,都可以使用子类来替代。但反过来不一定优点难点里氏替换原则四层含义依赖倒置原则 | Dependence Inversi

weixin_45631054的博客 930

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

设计模式的分类和六大原则

设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。 2、里氏代换原则(Liskov Substit

OyangYujun的专栏 636

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

设计模式分类和原则

设计模式分类和原则 一、设计模式分类 创建型:创建对象的模式 结构型:讨论类和对象的结构 行为型:关注对象的行为,解决对象之间的联系问题。     二、设计原则 2.1 单一职责原则 只有一个引起它变化的原因,一个类只有一个职责。   2.2 里氏替换原则 父类能出现的地方能用子类替换,但是反过来不一定可以。   2.3 依赖倒置原则 面向接口编程的精髓。 高层模块...

weixin_33895604的博客 84

EtherCAT从站原理与汇川H5U带24轴伺服配置实战

工业实时通信中,传统以太网因存储转发机制导致多轴同步时延迟抖动大,而EtherCAT采用集总帧和ESC芯片实现硬件级边飞边处理,大幅提升带宽利用率和同步精度。分布式时钟进一步将多轴抖动压至微秒级,确保运动控制轨迹平滑。在伺服驱动、IO模块等场景中,EtherCAT通过从站状态机、PDO映射和SYNC0信号实现高精度同步。以汇川H5U带24个660伺服轴为例,需合理规划周期与带宽,并注意ESI版本、DC参考时钟等配置细节,才能保证产线稳定运行。

weixin_33913332的博客 375

设计模式原则和分类总结

设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 设计模式6大原则: 单一职责原则:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 里氏替换原则:子类必须能够替换掉它们的父类。通俗的说,即子类可以扩展父类的功能,但不能改变父类原有的功能。 依赖倒转原则:高层模块不应该

liyue199512的博客 314

设计模式原则和分类

设计模式原则和分类 从今天开始学习设计模式,主要参考博览网的C++设计模式教程。 设计模式原则 1.依赖倒置原则(DIP,Dependence Inversion Principle ) - 高层次的模块(稳定)不应该依赖于低层次的模块(变化),二者都应该依赖于抽象。 - 抽象(稳定)不应该依赖于实现细节,实现细节应该依赖于抽象。 我从c++的角度来理解:高层次的模块指基类,低层次...

yhcuac 226

C++设计模式整理001-原则和分类

目录 1. 六大原则 1.1 单一职责原则 1.2 开放封闭原则 1.3 依赖倒置原则(Dependence Inversion Principle) 1.4 里式转换原则(Liskov Substitution Principle) 1.5 接口隔离原则(Interface Segregation Principle) 1.6 迪米特原则(Demeter Principle) 1.7 合成复用原创(Composite Reuse Principle) 2. 设计模式分类 2.1 创建型

星月相随的专栏 310

设计模式分类和七大原则

设计模式分类和七大原则

YIYIYI 1323

面向对象设计原则和设计模式分类

设计模式依据其目的可分为。

hxltech的专栏 551

设计模式的应用场景(1)--分类和原则

设计模式的分类 设计模式分为三种类型,共23种。 创建型模式: 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 创建者模式(Builder) 原型模式(Prototype) 单例模式(Singleton) 结构型模式: 外观模式(Facade) 适配器模式(Adapter) 代理模式(Proxy) 装饰模式(Decorator) 桥模式(Bridge) 组合模式(Composite) 享元模式(Flyweight)

SpringHeather的专栏 1356

23种设计模式概述(分类和原则)

设计模式的六大原则 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是[软件工程]的基石脉络。 一,分类 创建型模式:5钟,对象实例化的模式,创建型模式用于解耦对象的实例化过程。       工厂方法模式、抽象工厂模...

MoveFlower的博客 257

设计模式基本原则和分类

设计模式六个基本原则1.单一职责 2.开闭原则 3.里氏替换 4.依赖倒转 5.接口隔离 6.迪米特法则(最少知识原则)设计模式分类一、创建型模式1.单例 2.Builder 3.原型 4.工厂方法 5.抽象工厂二、结构型模式1.代理 2.组合 3.适配器 4.装饰 5.享元 6.外观 7.桥接三、行为型模式1.观察者 2.模板方法 3.迭代器 4.责任

萌古大汗的专栏 479
上一篇: Rocket MQ系列五 - 发送消息实践
下一篇: 设计模式之抽象工厂模式
geek-wmy
博客等级 码龄9年 322粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值