【设计模式】23种设计模式之七大原则

C# 读取图片和扫描PDF中的文本 本博客将探讨如何使用C#和OCR库实现从图片和扫描的 PDF 中提取文本。Spire.OCR for .NET 是一个OCR文字识别库,专为在 .NET 应用程序中识别图片的文本而设计。首先,使用 Spire.PDF 将扫描的 PDF 转换为图片,然后利用 Spire.OCR 从这些图片中提取文本。由于该OCR库并不支持直接处理PDF,因此要从扫描的 PDF 中提取文本,我们首先需要将 PDF 文档转换为图片。转换完成后,再利用 Spire.OCR 从生成的图片中提取文本。方法来识别图片中的文本。 阅读详情

什么是设计模式的原则

设计模式原则:是程序员在编程时应当遵循的原则,是各种设计模式的基础,即设计模式为什么这样设计的依据

1、单一职责原则

基本介绍

对类来说,即一个类应该只负责一项职责,如类A负责两个不同职责:职责1、职责2。当职责1需求变更而改变A时,可能造成职责B执行错误,所以需要将类A的粒度分解为A1、A2

案例分析

在这里插入图片描述

注意事项

1、降低类的复杂度,一个类只负责一项职责;
2、提高类的可读性、可维护性;
3、降低变更引起的风险;
4、通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级别违反单一指着原则:只有类中方法数量足够少,才可以在方法级别保存单一职责原则。

2、接口隔离原则

基本介绍

客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上

案例分析

按隔离原则这样处理:将接口Interface1拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。
在这里插入图片描述

代码实现

在这里插入图片描述

3、依赖倒转原则

基本介绍

依赖倒转原则: ①高层模块不应该依赖低层模块,二者都应该依赖其抽象;②抽象不应该依赖细节,细节应该依赖抽象;③依赖倒转的中心思想是面向接口编程。

依赖倒转原则是基于这样的设计理念:

1、相对于细节的多变性,抽象的东西要稳定的多。
2、以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。
3、在java中,抽象指的是接口或者抽象类,细节就是具体的实现类。
4、使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。

案例分析

任务:完成persion接收消息的功能【左边不符合,右边符合依赖倒转原则】

在这里插入图片描述

依赖传递的三种方式

1、接口传递方式;2、构造器方式;3、setter方式

注意事项

1、底层模块尽量都要有抽象类或接口,或者两者都有,程序稳定性更好。

2、变量的声明类型尽量是抽象类或接口,这样我们的变量引用和实际对象间,就存在一个缓冲层,利于程序扩展和优化。

3、继承时要遵循里氏替换原则。

4、里氏替换原则

关于继承性的思考和说明

继承包含一层含义: 父类中凡是已经实现好的方法,实际上是正在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实现的方法任意修改,就会对整个继承体系造成破坏。

继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其他类所继承,则当这个类需要修改的时,必须考虑到所有子类,并且涉及到子类的功能都有可能产生故障。

基本介绍

1、在使用继承时,遵循里氏替换原则,在子类中尽量不要重写父类的方法。

2、里氏替换原则告诉我们,继承实际上让两个类耦合性增强了,在适当情况下,可以通过聚合、组合、依赖来解决问题。

案例分析

左边程序引发的问题和思考

通用的做法是: 原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖、聚合、组合等关系替代。
在这里插入图片描述

5、开闭原则ocp

基本介绍

用抽象构建框架,用实现扩展细节

1、一个软件实体如类、模块和函数应该对扩展开发(对提供方),对修改关闭(对使用方)

2、当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化

3、编程中遵循其他原则,以及实验设计模式的目的就是遵循开闭原则

案例分析

下图左边代码的优点是比较好理解,简单易操作。缺点是违反了设计模式的开闭原则【即当我们给类增加新功能的时候,尽量不修改代码,或者尽可能少修改代码】,比如我们这时要新增加一个图形种类:三角形,我们需要修改的地方较多。

改进方案: 把Shape类做成抽象类,并提供一个抽象的draw方法,让子类去实现即可,这样我们有新的图形种类时,只需要让新的图形类继承Shape,并实现draw方法即可,“使用方”的代码就不需要修改,满足了开闭原则。

在这里插入图片描述

6、迪米特法则

基本介绍

一个对象应该对其他对象保持最少的了解。类与类关系越密切,耦合度越大。

迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供 public方法,不对外泄露任何信息。

迪米特法则还有个更简单的定义:只与直接的朋友通信。

直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖,关联,组合,聚合等。其中,我们称出现成员变量,方法参数,方法返回值中的类为直接的朋友,而出现在局部变量中的类不是直接的朋友。也就是说,陌生的类最好不要以局部变量的形式出现在类的内部。

案例分析

在这里插入图片描述

注意事项

1、迪米特法则的核心是降低类之间的耦合性。

2、需要注意:由于每个类都减少了不必要的依赖,因此迪米特法则只是要求降低类间(对象间)耦合关系,并不是要求完全没有依赖关系。

7、合成复用原则

基本介绍

合成复用原则就是尽量使用合成/聚合的方式,而不是使用继承

8、设计原则的核心

1、找出应用中可能需要变换之处,把它们独立出来,不要和那些不需要变化的代码混在一起;

2、针对接口编程,而不是针对实现编程;

3、为了交互对象之间的松耦合设计而努力;

在这里插入图片描述

若依框架二次开发——RuoYi-AI 本地部署流程 阅读详情

相关推荐

Python《打砖块》小游戏

Python《打砖块》小游戏!

PanDaoxi 1274

设计模式六大原则

文章目录软件设计的六大原则1. 开放-封闭原则2. 单一职责原则举例3. 里氏替换原则4. 依赖倒置原则举例5. 接口隔离原则6. 迪米特原则举例 软件设计的六大原则 设计模式的六大原则 参考URL: https://zhuanlan.zhihu.com/p/92152190 1. 开放-封闭原则 Open-Close Principle(OCP):一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。目的就是保证程序的扩展性好,易于维护和升级。 对于扩展是开放的,对于更改是封闭的。 开放-封闭原则是面向

西京刀客 1万+

【三维重建】基于多视角图像的三维重建

基于多视角图像的三维重建》

m0_64446860的博客 8759

设计模式与六大原则

设计模式6大原则

kayyoo的博客 2137

从零解析特斯拉线圈:谐振变压器的核心原理与DIY实践

本文深入解析特斯拉线圈的工作原理与DIY实践,从LC振荡电路到电磁耦合,详细介绍了谐振变压器的核心原理。通过材料清单、绕制技巧和安全指南,帮助爱好者从零开始打造迷你闪电发生器,体验高压电子实验的独特魅力。

weixin_33670786的博客 493

数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点

如果你仅仅是跑个先进工艺的flow,不懂先进工艺在数字IC后端实现上的不同点,为何有这样的不同点,针对这些不同之处后端实现阶段如何考虑它们,那么你等于0经验!大家可以针对本文所列的要点进行复盘,如果这些都搞透彻了,你就可以大胆把T12 nm的A72和A55项目写到你的简历中。T12这个工艺也是支持Preferred和Non-prefered两个方向来完成routing的,但是它对它们的最小线宽和最小线间距提出了更严格的要求。所有各个子模块的形状,彼此之间的间距都是有严格的要求。为何要有P48这一层?

weixin_37584728的博客 8340

设计模式七大原则

对类来说的,即一个类应该只负责一项职责。如类 负责两个不同职责:职责1,职责2。当 职责1 需求变更而改变 时,可能造成 职责2 执行错误,所以需要将类 的粒度分解为 A1,A2。 示例二 该示例遵守了单一职责原则, 但是这样做的改动很大,即将类分解,同时修改客户端, 是类级别上的单一职责。 示例三(推荐) 该示例虽然没有在类这个级别上遵守单一职责原则, 但是在方法级别上,仍然是遵守单一职责 注意事项和细节 降低类的复杂度,一个类只负责一项职责 提高类的可读性,可维护性 降低变更引起的风

沉梦听雨的博客 1527

openwrt之luci通信原理(一)

从模板中分离,每个LuCI2子页面也需要一个定义并存放在/www/luci2/view/目录下的一个视图,视图是使用了子页面特定对象的L.ui.view扩展的JavaScript文件。有一点需要注意的是需要提供execute方法,创建视图失败有几种原因,特别是当它需要ubus加载额外的数据使用的时候。所以在execute方法中提供成功或者失败的信息是有意义的。不幸的是在异步方法加载特定数据的时候,不能简单的返回true或false,解决的方法是返回一个Promise对象来运行推迟提供是否成功的信息。

1150

详细介绍设计模式七大原则

单一职责原则:一个类应该只有一个引起它变化的原因。开闭原则:软件实体应对扩展开放,对修改封闭。里氏替换原则:子类型必须能够替换掉它们的基类型。依赖倒置原则:高层模块不应依赖于低层模块,两者都应依赖于抽象;抽象不应依赖于细节,细节应依赖于抽象。接口隔离原则:使用多个专门的接口比使用单一的总接口更好。合成/聚合复用原则:尽量使用对象的组合/聚合,而不是继承关系达到复用的目的。迪米特法则(最少知道原则):一个对象应对其他对象有尽可能少的了解。

m0_54187478的博客 3409

Google Earth Engine ——在 GEE 中计算面积含各类要素计算(土地分类为例)

在遥感应用中工作时,许多操作需要计算面积。例如,需要在监督分类后计算每个类所覆盖的面积,或者找出灾害后区域内受影响的面积。计算栅格和矢量的面积在大多数软件包中是一个简单的操作,但在 Google Earth Engine 中以稍微不同的方式完成 - 这可能会让初学者感到困惑。在这篇文章中,我将概述计算矢量和图像面积的方法。我们将涵盖以下主题,从简单到复杂。 特征的面积计算,即矢量数据 图像的面积计算(单类) 按类别计算图像的面积 按区域按类别计算图像的面积 按年按地区按类别计算图像的面积 准备数据

此星光明博客 4024

23、工业物流中的多智能体路径规划与碰撞处理策略

本文探讨了工业4.0背景下工业物流中的多智能体路径规划(MAPF)与碰撞处理策略。分析了自动导引车(AGV)等移动资源的应用现状,综述了主流路径规划算法如A*、D*Lite、M*等,以及集中式与分布式碰撞检测方法。重点比较了五种碰撞避免策略:路径交叉、优先级、起始时间调整、无交叉路径和速度调整,提出了基于环境条件的策略选择流程,并通过流程图展示了评估、组合、测试与优化的全过程。文章强调应根据订单不确定性、时间约束、优先级和生产组织等因素综合选择或组合策略,以提升物流效率与系统可靠性。

mac99的博客 125

23种设计模式 —— 设计模式目的以及遵循的七大原则

系列文章 23种设计模式 —— 设计模式目的以及遵循的七大原则 文章目录系列文章设计模式目的设计模式七大原则1、单一职责原则2、接口隔离原则3、依赖倒转原则4、里氏替换原则5、开闭原则6、迪米特法则7、合成复用原则 设计模式目的 设计模式的目的是为了提高代码重用性、可读性、可扩展性、可靠性,使得程序呈现出高内聚、低耦合的特性。 代码重用性:相同功能的代码无需多次重复编写 可读性:编程按照一定规范,便于其他程序员的阅读和理解 可扩展性:当我们可以非常方便简单地增加新功能 可靠性:我们增加或删除部分功能时,

zcy的博客 3091

PCL体素滤波器【2026最新版】

PCL实现的VoxelGrid类和ApproximateVoxelGrid体素滤波,详细记录。博客长期更新,本文最近一次更新时间为:2026年3月14日。

点云侠的博客 39万+

Java设计模式总结篇:七大原则以及23种设计模式简单介绍

主要介绍七大原则和23种设计模式 原则:1、单一原则2、开闭原则3、里氏替换原则4、接口隔离原则5、依赖倒置原则6、迪米特法则7、合成复用原则 设计模式:1、单例模式2、工厂模式3、抽象工厂模式4、原型模式5、建造者模式6、适配者模式7、桥连模式8、装饰者模式9、享元模式10、代理模式11、组合模式12、外观模式13、状态模式14、责任链模式15、迭代器模式16、观察者模式17、策略模式18、模板方法模式19、解释器模式20、中介者模式21、备忘录模式22、命令模式23、访问者模式

小庄的博客 3546

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

七大原则+23种设计模式

持续更新 设计模式设计模式的意义1. 七大原则1.1 单一职责原则1.2 接口隔离原则1.3 依赖倒转(倒置)原则1.4 里氏替换原则1.5 开闭原则1.6 迪米特法则1.7 合成复用原则 设计模式的意义 编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,复用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好的 代码复用性 可读性 可扩展性 可靠性 (当我...

weixin_43367550的博客 1288

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

设计模式七大原则以及23种经典设计模式的分类

创建型(5) 单例模式 工厂模式 抽象工厂模式 原型模式 建造者模式 结构型(7) 适配器模式 桥接器模式 装饰着模式 组合模式 外观模式 享元模式 代理模式 行为型(11) 访问者模式 观察者模式 中介者模式 解释器模式 迭代器模式 模板模式 策略模式 职责链模式 状态模式 命令模式 备忘录模式 ...

weixin_45880263的博客 371

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

设计模式全解析:23种经典模式与七大原则的终极指南

本文系统解析23种设计模式,重点阐述七大核心设计原则(SRP、OCP、LSP、ISP、DIP、LoD、CRP),通过UML图示和Java代码实例演示应用方法。设计模式作为可复用的解决方案模板,能提升代码复用性、系统可维护性和团队协作效率。文章涵盖创建型(如单例、工厂方法)、结构型和行为型三大类模式,强调"优先组合而非继承"等实践准则,为构建灵活可扩展的软件架构提供系统化指导。通过将复杂问题分解为标准化解决方案,帮助开发者提高软件设计质量。

数字人生 1500

设计模式的23个种类和遵守的七大原则

设计模式的种类 设计模式有23种,分为三类: 创建型模式: 单例模式、抽象工厂模式 原型模式、建造者模式、工厂模式 结构型模式 适配器模式、桥接模式、装饰模式、组合模式 外观模式、享元模式、代理模式 行为型模式 模板方法模式、命令模式、访问者模式 迭代器模式、观察者模式、中介者模式 备忘录模式、解释器模式、状态模式 策略模式、责任链模式 设计模式七大原则 设计模式的核心思想 找出代码中的可变化之处,并独立出来,不要和固定代码混在一起 针对接口编程, 不要针对实现编程 为了交互对象之间

weixin_44198475的博客 256

面向对象七大原则和23种设计模式

一 面向对象对象七大原则 单开里依分组迪 助记:一只手单独掀开里边的衣服,里面衣服的荷包好几个,每个荷包都分门别类的放置东西,分组了,具备这种分类思想的人,是无敌的 二 23种设计模式 创建型5:工抽建单原 助记:工人抽烟,正在建设武器单元 结构型7:享适代桥外组装 助记:想必是带到桥外边去组装,防止泄密 行为型11:中访解命策,责备观模,迭状 助记:

wangbuji的博客 1796

3分钟掌握23个设计模式和七大原则

最近在学习设计模式,第一眼看到设计模式的时候,哇塞,这么多,头晕。那就用简笔画的形式把设计模式学习一下吧。

张姐姐聊编程 714

常见的23种设计模式和七大设计模式原则,一篇文章就搞定了!

设计模式和设计原则是软件开发中非常重要的概念,它们可以帮助我们更好地理解和设计软件系统。本文介绍了常见的23种设计模式和七大设计模式原则,并提供了详细的示例代码演示。希望读者可以通过本文掌握这些知识,并在实际开发中加以运用。

网络技术联盟站 208

23种设计模式和七大设计原则总结

三大类:创建型模式(5种),结构型模式(7种),行为型模式(11种) 创建型模式(将对象的创建与使用分离)-注重零件的创建(工厂方法模式,抽象工厂模式,单例模式,原型模式,建造者模式) 结构型模式(合成复用原则)描述如何将类或对象按照某种布局组成更大的结构(代理模式,适配器模式,装饰器模式,外观模式,桥接模式,组合模式,享元模式) 行为型模式(类行为模式和对象行为模式)用于描述多个类或对象之间怎样相互协作完成单个无法独立完成的任务,除模板和解释器是类行为型模式,其他的都是对象行为型模式(模板模式,解释

weixin_52377579的博客 307

七大设计原则与23中设计模式,原文超级实用

七大设计原则与23中设计模式 链接:link.

qq_39956994的博客 180

软件设计七大原则与23种设计模式:优化代码结构的全面指南

本文详细介绍了软件设计的七大原则和23种设计模式,包括创建型、结构型及行为型模式。通过丰富的实例讲解如何优化代码结构,增强代码的灵活性和扩展性,适用于Java、C#、Python等多种编程语言。跟随我们的指南,掌握高效编码的艺术。

技术那些事 392

23种设计模式之七大设计原则

23种设计模式之七大设计原则 一、前言 1.1 产生背景 ​ 设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 ​ 1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)、约翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented So

weixin_43823391的博客 626

C#23中设计模式——七大设计原则

一般学习一个新的知识点时,总先要看一遍理论知识,虽然看不懂,但是在看具体代码时就会慢慢的懂得。 设计原则是前辈大牛总结出的设计模式的理论知识,有必要先学设计模式。 1.单一职责原则 一个类或接口或方法或结构体,应该只有一个引起它变化的原因,如果一个类承担的责任太多,就相当于把这些责任耦合在一起了,一个责任可能会影响另外一个责任,不利于后期的维护。 2.开闭原则(Open-Closed Pr...

wengpiwang的博客 603
上一篇: 【设计模式】23种设计模式之初识
下一篇: 【设计模式】23种设计模式之创建型模式
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值