设计模式需要理解的原则

手把手教你用STM32F429+FreeRTOS搭建开源SIP电话(附代码与避坑指南) 本文详细介绍了如何使用STM32F429和FreeRTOS搭建开源SIP电话系统,涵盖硬件选型、FreeRTOS任务划分、PJSIP协议栈移植、音频系统优化及安全实践。通过实战案例和代码示例,帮助开发者快速实现嵌入式VoIP通信,特别适合物联网和音视频通信领域的应用开发。 阅读详情
     我们学习设计模式的目的是避免重复编码,减少劳动量。学习时不要忽略了原则,凭着感觉,看着书来学习设计模式,结果就是知其然而不知其所以然。初学者学习设计模式,应首先OP的三大原则(封套,继承,多态)之后,反复的结合原则,来学习设计模式,这样可以达到事半功倍的效果。
 
     设计模式的核心原则是:"开-闭"原则(  Open - Closed Principle 缩写:OCP  ),一切的一切都是围绕着"开-闭"原则展开的..
     意思是,在一个系统中,对于扩展是开放的,对于修改是关闭的,一个好的系统是在不修改源代码的情况下,可以扩展你的功能..而实现开闭原则的关键就是抽象化.
     在"开-闭"原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体的实现类,抽象类和接口在"开-闭"原则中扮演着极其重要的角色..即要预知可能变化的需求.又预见所有可能已知的扩展..所以在这里"抽象化"是关键!!!
      可变性的封闭原则:找到系统的可变因素,将它封装起来..这是对"开-闭"原则最好的实现..不要把你的可变因素放在多个类中,或者散落在程序的各个角落..你应该将可变的因素,封套起来..并且切忌不要把所用的可变因素封套在一起..最好的解决办法是,分块封套你的可变因素!!避免超大类,超长类,超长方法的出现!!给你的程序增加艺术气息,将程序艺术化是我们的目标!!
      里氏代换原则:任何基类可以出现的地方,子类也可以出现..如果你通读过<Java编程思想>,我想你应该明白这个原则,在书中,Bruce Eckel 大师用了大量的章节来讲解"向上转型"和"向下转型",我想目的很清楚,不仅是要你明白类的型别,更重要的是要你明白父类与子类的关系..

      依赖倒转原则:要依赖抽象,而不要依赖具体的实现..如果说开闭原则是目标,依赖倒转原则是到达"开闭"原则的手段..如果要达到最好的"开闭"原则,就要尽量的遵守依赖倒转原则..可以说依赖倒转原则是对"抽象化"的最好规范!!我个人感觉,依赖倒转原则也是里氏代换原则的补充..你理解了里氏代换原则,再来理解依赖倒转原则应该是很容易的..
  合成/聚合原则:要尽量使用合成/聚合原则,而不是继承关系达到软件复用的目的..此原则和里氏代换原则氏相辅相成的,两者都是具体实现"开-闭"原则的规范..违反这一原则:就无法实现"开-闭"原则..先来看看什么是合成,什么是聚合.
      什么是合成?
     合成:是指一个整体对依托他而存在的关系,例如:一个人对他的房子和家具,其中他的房子和家具是不能被共享的,因为那些东西都是他自己的..并且人没了,这个也关系就没了..这个例子就好像,乌鸡百凤丸这个产品,它是有乌鸡和上等药材合成而来的一样..也比如网络游戏中的武器装备合成一样,多种东西合并为一种超强的东西一样..
     
      什么是聚合?
      聚合:聚合是比合成关系的一种更强的依赖关系,聚合是一个整体对个体的部分,例如,一个奔驰S360汽车,对奔驰S360引擎,奔驰S360轮胎的关系..这些关系就是带有聚合性质的..因为奔驰S360引擎和奔驰S360轮胎他们只能被奔驰S360汽车所用,离开了奔驰S360汽车,它们就失去了存在的意义..在我们的设计中,这样的关系不应该频繁出现..这样会增大设计的耦合度..
      明白了合成和聚合关系,再来理解合成/聚合原则应该就清楚了..要避免在系统设计中出现,一个类的继承层次超过3次..如果这样的话,可以考虑重构你的代码,或者重新设计结构..当然最好的办法就是考虑使用合成/聚合原则...

      迪米特法则:系统中的类,尽量不要与其他类互相作用,减少类之间的耦合度,因为在你的系统中,扩展的时候,你可能需要修改这些类,而类与类之间的关系,决定了修改的复杂度,相互作用越多,则修改难度就越大,反之,如果相互作用的越小,则修改起来的难度就越小..例如A类依赖B类,则B类依赖C类,当你在修改A类的时候,你要考虑B类是否会受到影响,而B类的影响是否又会影响到C类..如果此时C类再依赖D类的话,呵呵,我想这样的修改有的受了..

     接口隔离法则:这个法则与迪米特法则是相通的,迪米特法则是目的,而接口隔离法则是对迪米特法则的规范..为了做到尽可能小的耦合性,我们需要使用接口来规范类,用接口来约束类.要达到迪米特法则的要求,最好就是实现接口隔离法则,实现接口隔离法则,你也就满足了迪米特法则...
    
       如果你能看这里,说明你已经对这些原则了有了感性的认识..这些原则是设计模式的核心,如果不能充分理解这些原则,是很难理解好设计模式的,如果第一遍看不懂,没关系,请反复揣摩,细读每个字,每句话..对于这些原则,我也是看了N*N遍才明白的,我推荐看完原则之后,请看设计模式,看两三个模式,然后理解一下,自己动手把模式实现出来,再回头来看原则,你会感觉,你的模式一定是满足了其中的某些原则,这是必然的,只要你理解了原则,设计模式不难理解。
【图像去噪】论文精读:AKDT: Adaptive Kernel Dilation Transformer for Effective Image Denoising 论文题目:AKDT: Adaptive Kernel Dilation Transformer for Effective Image Denoising —— AKDT:用于有效图像去噪的自适应核膨胀Transformer图像去噪是一项基本但具有挑战性的任务,特别是在处理高分辨率图像和复杂的噪声模式时。大多数现有方法依赖于标准的 Transformer 架构,该架构通常计算复杂度高,并且对不同噪声水平的适应性有限。在本文中,我们介绍了自适应核膨胀Transformer(AKDT) 阅读详情

相关推荐

ArcGIS 10.4 Desktop安装步骤。

步骤 1 :安装 LicenseManager 有了安装包以后,我们进入安装包文件目录,如图所示,首先需要安装ArcGIS license manager,即点击打开图中红色框中exe文件。 PS:安装 LicenseManager,关于 License 的安装路径一般默认即可,因为很小的,装C 盘也无所谓了,当然了自己改了也可以的,但是不建议! 即便修改路径,建议只改盘符,不修改相对路径方式! 如:C:\Program Files (x86)\ArcGIS\License10.6 修改为 D:\.

IT爱好者 2万+

深入理解设计模式-设计模式七大原则

深入理解设计模式-设计模式七大原则 文章目录前言一、单一职责原则1.基本介绍2.注意事项和细节二、接口隔离原则1.基本介绍三、依赖倒转原则1.基本介绍2.注意事项和细节四、里氏替换原则1.基本介绍五、开闭原则1.基本介绍六、迪米特法则1.基本介绍2.注意事项和细节七、合成复用原则1.基本介绍结尾 前言 一、单一职责原则 1.基本介绍 对类来说的,即一个类应该只负责一项职责。如类A负责两个不同职责:职责1,职责2。 当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为 .

少说,多做 1万+

基于集成运放心电放大器设计(原创)

原创作者:einyboy or alert 最近在看美剧《危机边缘》关于边缘科学的案件,科技控可以看一下,但建议不在吃东西的时候看。想像力是创造的思想源头,动手能力则是创造的车床。 自认为是没有想像力的那类,只能发挥动手能力了。 心电测量简介 图1 心电极接线图 如图1心电测试一般使用3个心电极进行测量,各个电极的说明如下: RA: Right Arm缩写,右手电极 LA: L...

huandaohack的专栏 6923

设计模式原则理解

什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。 六大原则 单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则,开闭原则 单一职责原则 尽量一个类只实现一种功能,避免出现假如有多个功能后更改其中一个然后影响其他的情况 里

weixin_43626889的博客 170

Duilib的简单使用(五、DuiDesigner/DuiEditor的下载编译)

一、前言 在Duilib的简单使用(一、duilib demo)中我们介绍了利用duilib简单的构造一个项目 在Duilib的简单使用(二、xml实现界面与业务分离)中我们介绍了XML在duilib中的使用 在Duilib的简单使用(三、界面逻辑交互)中我们已经知道如何简单的进行界面的交互 在Duilib的简单使用(四、换肤)中,我们提了一下Duilib强大的一键换肤功能。 通过之前的说明,我们知道duilib是通过xml来分离界面和业务逻辑的,但是xml如果不能预览,那每次敲一个再运行一下看看效果,这不

LyRics1996的博客 2884

Qt入门教程【环境搭建篇】Qt6+Mingw+QMake+QtCreator

Qt Windows平台安装

小鱼酱的博客 2万+

对于设计模式中七大原则的理解

使用设计模式能够使我们开发的程序,易维护、可拓展,可复用。但是在23个设计模式的背后,还有7个开发原则去支撑着设计模式,保证23个设计模式能够易维护、可拓展,可复用。所以这篇文章来解开七大设计原则的神秘面纱。

小小张自由—>张有博 4095

机器学习特征选择-t检验

在特征选择的过程中通过计算检验统计量值,比较特征之间的统计量的大小,并降序排列,选取统计值较高的特征,从而起到去除差别小的特征(此差别小的特征难以区分不同的额类别)的目的。 以t检验(Student's t test)为例: 假设检验 通过比较两类样本的随机变化,通过计算其p值决定是否拒绝零假设,也即是说:通过计算p值,若p值小于某一阈值则认为两个样本具有显著差异,两个样本是不同的,此时拒绝...

heda3的博客 6700

【设计模式】一文理解记住设计模式的原则

设计模式概述

imbzz的博客 1317

【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等

本专栏研究领域为【超分辨率重建】,涵盖图像超分、视频超分,实时超分,4K修复等方面。主要内容包括主流算法模型的论文精读、论文复现、毕业设计、涨点手段、调参技巧、论文写作、应用落地等方面。算法模型从SRCNN开始更新至今,一般是一篇论文精读对应一篇论文复现。论文精读详解理论,归化繁为简,归纳核心,积累词句,培养阅读论文和论文写作能力。论文复现依托Pytorch代码,实现完整的模型训练流程,总结调参方法,记录碰到的bug,论文插图可视化,培养读写代码能力、做实验的能力、以及应用落地能力。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 3万+

免ROOT、不刷机、不依赖Xposed实现Android改机的思路

最近在一个项目中需要模拟多种Android设备的环境。无奈市面上的大部分改机工具,要么需要ROOT权限,要么依赖Xposed,甚至还得重启设备。为了实现更灵活、更干净的改机方式,我开始了漫长的技术探索,最终找到了免ROOT、不刷机、拒绝Xposed的实现路径。Android_IDIMEI手机序列号手机型号、品牌、CPU型号等硬件信息GPS位置、Wi-Fi参数、通话记录、短信等软硬件数据这些信息通常用于标识设备唯一性,而改机就是对这些标识数据进行模拟或篡改。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2663

设计模式六大原则理解

前言:在开发当中,可能很多人都没去考虑过以设计模式的方案写代码,其实在很多地方处处都展示了设计模式的强大,任何框架都会以某种模式进行设计,那以下就给大家介绍下设计模式。 一、设计模式中的使用 设计模式在软件开发中的两个主要用途。 1、开发人员的共同平台 设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。 2、最佳的实践 设计模式已经经历了很长.

天秤-white的博客 214

【异常】OpenClaw提示异常 1302:您的账户已达到速率限制,请您控制请求频率

摘要:系统返回1302错误码提示"账户已达到速率限制",表明请求频率超过服务阈值。主要原因是并发请求数达上限或请求过于密集。解决方案包括:降低并发请求量、引入请求队列机制平滑流量,或根据服务规则提升账户权益等级以获取更高并发额度。建议优先优化请求频率控制策略,避免触发系统限流机制。

奶爸的编程之路,也就一周冷个三天 1141

如何理解设计模式的六大原则概念?

设计模式的六大原则 1.开闭原则(Open Close Principle): 开闭原则就是说对扩展开放,对修改关闭,在程序需要进行扩展的时候,不能去修改原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。 2.里氏替换原则(Liskov Substitution Principle,简称LSP): 子类可以替换父类,子类可以拓展父类的功能,但不能改变原有父类的功能; 因为继承带来的侵入性,增加了耦合性,也降低了代码灵活性,

WarmCalm的博客 364

Camera2Demo

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

设计模式设计模式(Design Pattern,DP)入门,开闭原则和单一职责理解

设计模式(Design Pattern,DP)入门以及六大原则(part 1) 面向对象编程 面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向对象是相对于面向过程来讲的,指的是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系 统建模,更贴近事物的自然运行模式。 啥是面向过程,啥是面向对象,可能举个例子会比较清晰: 做一道西红柿炒蛋: 面向过程做法:

afiguresomething的博客 373

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

设计模式六大原则的理解

梳理设计模式中的六大原则,阐述依赖倒置原则的含义

蒋大钊的博客 578

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

设计原则和设计模式的理解

设计原则: 1.单一职责原则:尽量保证每一个类或者接口拥有单一的职责,即专业性,比如说一个人学的东西太广就容易不精,代码也是一样,一项功能块的修改有可能会影响其他的功能块。 2.里氏替换原则:子类尽量不要重写和重载其父类的方法,可能会导致子类无法使用父类的功能,即子类继承只为了扩展不为了修改。 3.依赖倒置原则:细节依赖抽象,业务逻辑牵一发而动全身,通过接口进行类之间的依赖可进一步解耦。

MaPengHao的专栏 459

对设计模式六大原则的理解

以下内容都是我个人的一些理解,并不代表官方或主流的说法,欢迎大家一起讨论。 写在前面:有一些最基本的理解是需要首先说明的。设计模式并不是规定,也不是唯一的准则,你可以完全不用设计模式而完成你的代码,保证它能实现你想要的功能。所以设计模式不是非用不可的。那我们为什么要用它呢?因为它使我们的程序结构更清晰,更有扩展性,而且它可以解决某些特定的问题。就像你可以顶着一头鸟窝快乐的生活,你也可以把

风一样自由 899

快速理解设计模式六大原则

设计模式的核心总结起来就一句话:用抽象构建框架,用实现扩展细节。目的就是代码修改的改动量最小 设计模式六大原则 单一职责原则 很好理解,一个类职责要单一,不要承载过多的职责,就比如说我们电脑上所有的文件,不可能都放在一起,需要很多个文件夹,而文件夹中的文件相关性越高、文件数量越少,这个文件夹的职责就更单一 开闭原则(开放扩展修改关闭) 开放扩展关闭修改,实际应用最多的就是抽象类,对一些不变的都进行了抽象,一些变化的交由实现类进行实现 里氏替换原则(子类实现父类的要求) 主要定义了一些关于继承方.

July的博客 3821

如何理解设计模式的六大原则?

我们知道,java中有类,父类,抽象类,接口这些概念,而设计模式的六大原则就解释了它们及其它们之间的关系是怎样的,接下来我们将由简到难一一剖析。 开闭原则:是总纲,他告诉我们要对扩展开放,对修改关闭。即通过开闭原则,我们可以通过扩展行为来实现新的功能,而不是通过修改已有的代码。开闭原则可以帮助我们构建一个稳定,灵活的软件系统。 单一职责原则:面向对象最基本的概念就是类,此告诉我们实现类要职责单一。即每个类应该只负责一项规范,这是为在部分职责发生变化时,牵连到其他职责,是为了解耦合。 迪米特法则:

徐明晓的博客 780

设计模式六大原则_快速理解-设计模式六大原则

前言:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每一个架构师所必备的技能之一。想要精通设计模式,必须要先搞清楚设计模式...

weixin_39866087的博客 104

设计模式基本原则的理解

单一职责原则 记一下英文名 Single Responsibility Principle (srp),防止以后看到不认识。 定义:应该有且仅有一个原因引起类的变更。 即一个类只负责一个职责。 理解 因为如果一个类负责太多的职责的话: 不易维护,当其中一个职责变化而修改这个类时,可能会影响到其他职责的功能。 可读性差,将大量的职责放在一个类里面,导致代码不易理解。 反过来,单一职责的优点就是: 降低类的复杂度 提高类的可读性,提供系统的可维护性 变更引起的风险降低,如果单一职责划分的好,修改一个功

Wu_Shang001的博客 297

java设计模式七大原则理解

设计模式目的: 1.重用性 :相同能能的代码,不用多次编写 2.可读性 :编程规范性 3.可扩展性 :当需要增加新的功能时成本低 4.可靠性 :当增加/减少新功能,对原来功能没有影响 5.是程序高内聚,低耦合的特性:模块之间耦合性低 设计模式原则: 1.单一职责原则 2.接口隔离原则 3.依赖倒转(倒置)原则 4.里氏替换原则 5.开闭原则 6.迪米特原则 7...

qq_39980463的博客 304

快速理解-设计模式六大原则

前言:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每一个架构师所必备的技能之一。想要精通设计模式,必须要先搞清楚设计模...

AlbenXie的博客 613

用心理解设计模式——设计模式的原则

设计模式总是看完又忘了, 忘了再翻出来看。 我想,应该抽时间仔细捋一遍。 理想的软件实现应该是:依照功能需求设计接口,模块化组装,各模块之间只通过接口耦合,模块内部实现丝毫不关心。就像使用电子元件组装电子产品,可以做到即插即用,灵活拆卸更换,易于扩展功能,方便复用。 设计模式是前人总解出来,让软件开发变得清晰、需求变化变得容易的套路。有人说设计模式是荼毒,实际上,要么是因为他生搬硬套,拿着锤子...

NRatel的博客 756

深入理解设计模式六大原则

深入理解设计模式六大原则无广告小说网 https://www.amini.net 万变不离其宗,不管是Java还是C++,凡是面向对象的编程语言,在设计上,尽管表现形式可能有所不同,但是其实质和所需遵守的原则都是一致的。本文便是带领读者去深入理解设计模式中的六大原则,以期帮助读者做出更好的设计。 单一职责原则 单一职责原则:Single Responsibility Principl...

终极冥帝 228
上一篇: 学习一种新编程语言要做的15个练习
下一篇: 基础记录
CEJ-盐井
博客等级 码龄17年 10粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值