设计模式的几个基本原则

保姆级教程:用达芬奇Configurator配置CAN总线(从DBC导入到Controller设置) 本文详细介绍了使用达芬奇Configurator工具从DBC文件导入到CAN总线控制器设置的全流程配置方法。通过环境准备、CAN控制器模式选择、硬件参数配置、通信参数优化及通信栈集成等关键步骤,帮助开发者高效完成AUTOSAR架构下的CAN总线开发,特别适合汽车电子领域的工程师参考。 阅读详情

一. 开-闭"原则(  Open - Closed Principle 缩写:OCP  ),软件实体(类,模块,函数等)应该可以扩展,但是不可以修改 

意思是,在一个系统中,对于扩展是开放的,对于修改是关闭的,一个好的系统是在不修改源代码的情况下,可以扩展你的功能..而实现开闭原则的关键就是抽象化. 
在"开-闭"原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体的实现类,抽象类和接口在"开-闭"原则中扮演着极其重要的角色..即要预知可能变化的需求.又预见所有可能已知的扩展..所以在这里"抽象化"是关键! 
当然对于修改,我们不可能完全避免,也不可能完全预知到未来的变化.所以我们要做到尽量去不要修改,或者少的修改就能达到我们的目标.

例如:对于简单工厂模式.我们有能力预知到未来可能添加计算,所以,我们将运算类抽象出来.为了以后方便扩展.这里的运算类是不可以修改的.但是对于他的子类.我们是可以扩展的.

二:依赖倒转原则 
A:高层模块不应该依赖底层模块

B:抽象不应该依赖细节,细节应该依赖抽象

就是说要依赖抽象,而不要依赖具体的实现..如果说开闭原则是目标,依赖倒转原则是到达"开闭"原则的手段..如果要达到最好的"开闭"原则,就要尽量的遵守依赖倒转原则..可以说依赖倒转原则是对"抽象化"的最好规范!! 
通俗的说就是只有抽象的东西才是最稳定的,也就是说,我们依赖的是它的稳定。如果将来“抽象”也不稳定了,那么谁稳定我跟谁,其实说白了不就是傍大款吗!

比如我们在观察者模式中(Observer)这里的通知者,就不应该是具体.因为我们应当考虑到如果前台那里换了人怎么办?这个通知还可以是其他人通知.比如老板要通知去做某件事怎么办?为了让大家都能用这个通知.所以要设置成抽象的.这里的前台,老板都要依赖这个通知.也就是说.细节要依赖抽象.

三:里氏代换原则:

定义:子类型必须能够替换它们的父类型[DH] 
这个原则是对继承的一个约束,也就是说,继承中子类严格满足"is a "的关系.这里我个人有深刻的体会.尤其是在看别人的UML图的时候. 对你帮助很大.当你看到一个继承的时候.要习惯性的把他的父类和子类看成一个整体.这样会有助于你去理解各个类之间的关系.因为根据 里氏代换原则.父类出现的地方子类也可以出现.

四:单一职能原则 
定义:就一个类而言,应该仅有一个引起他变化的原因

也就是说,不要把变化原因各不相同的职责放在一起,因为不同的变化会影响到不相干的职责。再通俗一点地说就是,不该你管的事情你不要管, 
管好自己的事情就可以了,多管闲事害了自己也害了别人。(当然这里说的多管闲事跟见义勇为是两回事,我们提倡见义勇为!) 
这个就是说,一个类尽量做到了功能单一,比如在mvc中,判断数据的类和添加数据库的类一定要分开.单一职能的不是说职能多了我们实现不了,是 

迪米特法则:系统中的类,尽量不要与其他类互相作用,减少类之间的耦合度

因为在你的系统中,扩展的时候,你可能需要修改这些类,而类与类 之间的关系,决定了修改的复杂度,相互作用越多,则修改难度就越大,反之,如果相互作用的越小,则修改起来的难度就越小..

例如A类依赖B类,则B类依赖C类,当你在修改A类的时候,你要考虑B类是否会受到影响,而B类的影响是否又会影响到C类..如果此时C类再依赖D类的话,呵呵, 

接口隔离法则:这个法则与迪米特法则是相通的,迪米特法则是目的,而接口隔离法则是对迪米特法则的规范..

为了做到尽可能小的耦合性,我们 需要使用接口来规范类,用接口来约束类.要达到迪米特法则的要求,最好就是实现接口隔离法则,实现接口隔离法则,你也就满足了迪米特法则... 
这里也体现了一个依赖原则,要尽量依赖抽象,不要依赖具体. 
设计模式中的体现:高层模块依靠接口和底层模块依赖.





高数15种常见特殊曲线:星形线、心形线、摆线、对数螺线、双曲螺线、阿基米德螺线、伯努利双纽线、三叶玫瑰线、四叶玫瑰线、六叶玫瑰线、三次抛物线、半立方抛物线、箕舌线、蔓叶线、笛卡儿叶形线、概率曲线 4.1 对数螺线(等角螺线、生长螺线)三叶玫瑰线、四叶玫瑰线、六叶玫瑰线。​7.2 半立方抛物线(尼尔曲线)10.笛卡儿叶形线(茉莉花瓣曲线)常考选择题、填空题,大题也涉及。​4.2 双曲螺线(倒数螺线)11.阿基米德螺线(等速螺线)3.摆线(圆滚线、旋轮线)5.双纽线(伯努利双纽线)1.星形线(四尖瓣线)2.心形线(心脏线).................. 阅读详情

相关推荐

深入解析SGLang框架:从架构设计到核心组件实现

本文深入解析了SGLang框架的架构设计与核心组件实现。SGLang是一个专为大语言模型推理设计的高效框架,其核心优势在于清晰的分层架构、高效的调度策略以及精细的内存管理。文章详细剖析了其客户端接入、服务器端调度、模型执行引擎及Tokenizer/Detokenizer管理器等关键组件,揭示了其实现高性能推理的内部机制。

coffee的博客 577

设计模式遵循的几个基本原则

面向对象的三个基本特征: 封装,继承,多态; 封装:将数据和函数方法封装在一个类之中; 继承:子类继承父类 多态:不同的对象对于同一方法提现出不同的状态 [这里写图片描述](http://img.blog.youkuaiyun.com/20160623185313421) 面向对象的几个基本原则:1.单一原则:一个对象只负责完成一个职责;高内聚,低耦合; 2.开闭原则:对扩展开放,对修改关闭;对类的改动

upupdate_的专栏 556

单细胞测序数据读取实战指南:从入门到精通

本文提供了单细胞测序数据读取的实战指南,涵盖从标准10X Genomics格式到通用表达矩阵及RDS文件的读取方法。文章重点解析了数据读取的核心步骤、常见问题解决方案及进阶技巧,旨在帮助用户夯实数据分析基础,确保后续分析流程的准确性。

weixin_29095587的博客 460

egg的设计理念和底层实现架构模式

在egg的官方文档上可以看到: Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。 那么到底什么是egg呢? egg设计理念 首先egg也是一款基于node的server web框架,但这个框架不同于koa2, express。 1,egg不定制技术选型,专注于提供 Web 开发的核心功能和一套灵活可扩展的插件机...

前端361 2030

PyCharm安装PyQt5及工具(Qt Designer、PyUIC、PyRcc)详细教程来了

Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合。这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的所有工具包,主要内容包括PyQt5、PyQt5-tools的依赖包安装和Qt Designer、PyUIC、PyRcc三个工具的设置。最后简单演示了PyQt5的调用方式及三个工具的使用方法。

Python966的博客 3万+

高通平台 5G RF调试总结

目录: 1.QRCT4的使用 2.RFC配置 3.5G CA 配置概括 4.RFPD 运行及错误分析 5.CA吞吐率问题分析

嘿v小米的博客 9680

设计模式六大原则——依赖倒置原则

设计模式六大原则依赖倒置原则 概念 问题描述 问题由来 解决办法 示例 设计模式六大原则——依赖倒置原则概念 依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。 问题描述    当有一个功能模块P依赖一个底层的模块P1,当有一天P改成依赖底层功能模块P2的时候,高层的功能模块P也可能需要改动。问题由来    如果高层模块直接依赖底层模块,那么无

伊壬同学的博客 1041

ubuntu22.04 安装部署 openclaw

ubuntu22.04 安装部署 openclaw

nalanxiaoxiao2011的博客 991

设计模式基本原则

目录 设计模式基本原则 设计模式几项原则 开放封闭原则 (OCP,Open For Extension, Closed For Modification Principle) 单一职责原则 (SRP,Single Responsibility Principle) 依赖倒置原则 (DIP,Dependence Inversion Principle) 接口隔离原则 (ISP,Interface Segegation Principle) 里氏替换原则 (LSP, Liskov Substi..

baidu_41388533的博客 1051

linux cma alloc fail 问题分析

摘要:日志显示CMA连续内存分配失败(错误码-ENOMEM),请求128页(512KB)内存时因CMA区域不足或内存碎片导致失败。分析发现系统CMA总内存131072KB,空闲65536KB。解决方案包括:1)手动触发内存碎片整理;2)修改设备树或内核配置增大CMA区域(如从16MB增至20MB)。通过调整CONFIG_CMA_SIZE_MBYTES或设备树中的size参数可解决该问题。

陌上花开缓缓归以的博客 798

把审批体验做成一体化:SAP Business Workflow 里的 Secondary Method、Before Method 与 After Method

摘要:SAP Business Workflow 中,Task 的 Secondary、Before 和 After 三类方法对提升审批体验和可追溯性至关重要。Secondary Method 可自动展示辅助信息(如审批时弹出排班报表),但需注意其独立会话特性;Before Method 适合预处理和审计留痕;After Method 确保收尾动作可靠执行。三类方法按特定顺序调用,且错误不影响主流程。合理使用这些方法能减少事务码切换,增强审计能力,优化用户体验。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 190

设计模式之几个基本设计原则

设计模式中会时常用到这些设计原则,它们分别是 1,开放-封闭原则 2,单一职责原则 3,依赖倒转原则 4,里式转换原则 5,迪米特法则 下面我们分别对这5个设计原则作介绍: 1开放-封闭原则 什么是开放封闭原则? 开放封闭原则是指类允许扩展功能但是不允许修改类本有的功能. 为什么要使用开放封闭原则? 面对需求的改变可以保持相对的稳定.例如我们在客户端要使用一个加法类,这时候需

micaixiaoduanku的专栏 778

软件测试面试题之易错题

(1)白盒测试:又称功能功能 测试、数据驱动测试和行为测试,是一种从用户观点出发的测试,被测程序为黑盒子, 通过测试来检测每个功能是否能够正常使用。(2)黑盒测试:又称结构测试和逻辑驱动 测试,是知道产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书 的规定去正常运行。(1)、测试需求分析;(2)动态白盒测试:需要对各个模块功能、模块间的接口、局部数据结构、主要执行路径、 错误处理等方面的测试。(2) 集成测试所测试的对象是模块间的接口,其目的是在找出在模块接口上面,包括整体体系结构上的问题;

m0_37449634的博客 679

Java设计模式-面向对象的几个基本原则

(Favor Composition Over Inheritance)是一项面向对象设计中的重要原则,它建议在设计软件时,优先使用对象组合(Composition)来复用代码,而非继承(Inheritance)。(High Cohesion and Low Coupling)是面向对象设计和软件架构中的一项关键原则,旨在提高系统的模块化、可维护性和可扩展性。也就是说,当需求变化或需要添加新功能时,应该通过扩展现有的代码,而不是直接修改已经存在的代码。,这两者是设计健壮、灵活和易于维护的系统的基础。

m0_74462339的博客 784

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

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

面向对象的几个基本原则(设计模式笔记)

第二章 面向对象的几个基本原则 2.1 面向抽象原则 设计一个类时,不应面向具体的类,而且面向抽象类或接口。 2.2开—闭原则 ​ 设计应当对扩展开发,对修改关闭。 2.3多用组合少用继承 ​ 最终目的降低耦合。 继承: 直接用extends继承父类 组合:关联 将父类作为子类的属性来调用 组合:依赖 将父类作为子类传入的参数来调用 2.4高内聚—低耦合原则 ...

u013456390的博客 135

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

01、设计模式之简介及面向对象的几个基本原则

1、设计模式:从许多优秀的软件系统中总结出成功的可复用的设计方案。 2、抽象类作为上转型对象:抽象类不能用new运算符创建对象,但其非abstract子类必须重写全部的abstract方法,这样一来,就可以让抽象类声明的对象成为其子类对象的上转型对象,并且调用子类重写的方法。 如A是抽象类,有抽象方法add(),B继承A并且实现里面的抽象方法,则A a=new B();a.add();可以

虚心求学_一点一滴 1014

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

设计模式01-面向对象设计的几个基本原则

面向对象设计的几个基本原则 要考试了,一些面向对象设计的原则小结一下: 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因; 例子:手机的过多功能违反了单一职责原则; 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏; 软件设计真正

kingmicrosoft的专栏 785

面向对象设计模式的几个基本原则及其核心思想简介

<br />面向对象设计模式的几个基本原则及其核心思想简介<br />              Author: Macower<br />在讲述设计模式的原则之前,我们必须要了解面向对象的几个基本目标。<br />面向对象,将世界归纳为一句话:万事万物皆对象。<br />在没有面向对象之前,软件的可维护性是相当的烂,主要原因有四个:<br />l       过于僵硬<br />l       过于脆弱<br />l       复用率低<br />l       黏度过高<br />在软件设计过程当中无

macower 技术专栏 5346

java设计模式(第二章)面向对象的几个基本原则

目录 2.1 面向抽象原则 2.2开——闭原则 2.3多用组合少用继承原则 2,组合与复用 耦合内聚 2.1 面向抽象原则 1抽象类和接口 2 面向抽象 指当设计一个类时,不让该类面向具体的类,而是面向抽象类或接口,即所设计类中的重要数据是抽象类或接口声明的变量,而不是具体类声明的变量。 2.2开——闭原则 所谓开闭原则就是:让设计对外扩展开放,对修改关闭...

伊甸园的博客 390

常用开源框架中设计模式使用分析---面向对象的基本原则、设计模式分类

一.面向对象的几个基本原则 1、面向抽象原则: 指当设计一个类时,不让该类面向具体的类,而是面向抽象类或接口,即所设计类中的重要数据是抽象类或接口声明的变量,而不是具体类声明的变量。 2、“开-闭”原则: 对扩展开放,对修改关闭。 也就是当一个设计中增加新的模块时,不需要修改现有的模块。即一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化. 3、“多用组合,少用继承”原则 通过...

qq_43608567的博客 423

设计模式四人帮

GoF(“四人帮”Gang of Four,指Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides四人)的《设计模式》(1995年出版)是第一次将设计模式提升到理论高度,并将之规范化。本书提出了23种基本设计模式,自此,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。        设计模式和框架   可复用面向对象软

cpf506497746的专栏 3271

设计模式七大原则(案例解析)

一、 设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好 1) 代码重用性 (即:相同功能的代码,不用多次编写) 2) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) 3) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护) 4) 可靠性 (即:当我们增加新的功能后,对原来的功能没有影响) 5) 使程序呈现高内聚,低耦合的特性 二. 设计模式七大原则 ...

Android系统优化 4711

【Java设计模式】设计原则,类图

设计模式是从许多优秀的软件系统中总结成功的可复用的设计方案 设计模式的分类:创建型,行为型,结构型 面向对象的几个基本原则 面向抽象原则 抽象类(abstract): 抽象类中可以有abstract方法,也可以有非abstract方法 抽象类不能用new运算符创建对象 如果一个非抽象类是一个抽象类的子类,那么它必须重写父类的abstract方法 作为上转型对象 接口(interface): 接口中只可以有public权限的abstract方法,不能有非abstract方法 接口由类去实现,及一个类如果

weixin_55270959的博客 966

设计模式原则

设计模式六大原则

qq_44882018的博客 154

常用设计原则和设计模式

一、常用设计原则二、常用设计模式。

yeruikang的博客 205

Java设计模式——六大设计原则

1、概述 设计原则则是设计模式所遵循的规则,设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。 2、六大设计原则 2.1 单一职责原则(Single Responsibility Principle - SRP) 单一职责原则(SRP:Single responsibility principle)又称单一功能原则,它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原...

跨语言,跨平台,跨应用 1480
上一篇: sql中的date数据到java中的date类型转换
下一篇: 使用工厂模式和策略模式重构复杂业务逻辑
猛犸归来
博客等级 码龄20年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值