软件设计模式的原则

server/2025/1/15 20:41:24/
  1. 【单一原则】(Single Responsibility Principle):一个类或者一个方法只负责一项职责。

  2. 【里氏替换原则】(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有父类的功能。

  3. 【依赖倒置原则】(dependence inversion principle):面向接口编程,(通过接口作为参数实现应用场景)。

    (1)抽象就是接口或者抽象类,细节就是实现类;

    (2)上层模块不应该依赖下层模块,两者应依赖其抽象;

    (3)抽象不应该依赖细节,细节应该依赖抽象。

    注:通俗点就是说变量或者传参数,尽量使用抽象类,或者接口。

  4. 【接口隔离原则】(interface segregation principle):建立单一接口;(扩展为类也是一种接口,一切皆接口)

    定义:a.客户端不应该依赖它不需要的接口;b.类之间依赖关系应该建立在最小的接口上;

    简单理解:复杂的接口,根据业务拆分成多个简单接口;(对于有些业务的拆分多看看适配器的应用)

    注:接口的设计粒度越小,系统越灵活,但是灵活的同时结构复杂性提高,开发难度也会变大,维护性降低;。

  5. 【迪米特原则】(law of demeter LOD):最少知道原则,尽量降低类与类之间的耦合,一个对象应该对其他对象有最少的了解。

  6. 【开闭原则】(open closed principle):对扩展开放,对修改闭合。


http://www.ppmy.cn/server/158651.html

相关文章

按键精灵ios越狱脚本教程:多选框联动的ui界面

以下是一个简单的 iOS 代码示例,使用 Swift 语言来创建一个包含多选框(复选框)的 UI 界面,并实现联动效果。 import UIKitclass ViewController: UIViewController {let checkbox1 UIButton(type:.system)let checkbox2 UIButt…

VMWARE linux LVM 扩容磁盘分区

VMWARE设置 关闭虚拟机,删除快照,编辑虚拟机设置-硬件-硬盘-扩展磁盘容量(填写扩容后的最终大小)。进入虚拟机查看当前分区情况 [rootlocalhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 1…

Windows电脑本地安装并随时随地远程使用MusicGPT生成AI音乐

文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 在如今快节奏的生活里,音乐不仅能够抚慰我们的心灵,还能激发无限创意。想象一下,在忙碌的工作间隙或闲暇时光中,只需输…

【声音场景分类--论文阅读】

1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段,主要重点是建立一…

如何规模化实现完全自动驾驶?Mobileye提出解题“新”思路

在CES 2025上,Mobileye展示了端到端自动驾驶系统Mobileye Drive™,通过高度集成的传感器、算法和计算平台,可以实现自动驾驶功能的全覆盖。 Mobileye创始人兼首席执行官Amnon Shashua教授 期间,Mobileye创始人兼首席执行官Amnon …

C++实现设计模式---模板方法模式 (Template Method)

模板方法模式 (Template Method) 模板方法模式 是一种行为型设计模式,它定义了一个操作中的算法骨架,将某些步骤的实现延迟到子类。通过模板方法,子类可以在不改变算法结构的情况下重新定义算法的某些步骤。 意图 在一个方法中定义算法的骨…

力扣264. 丑数 II

给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是质因子只包含 2、3 和 5 的正整数。 //用一个数组来保存第1到第n个丑数 //一个丑数必须是乘以较小的丑数的 2、3 或 5来得到。 //使用三路合并方法:L2、L3 和 L5三个指针遍历2、3、5倍的丑数序列…

C++例程:使用I/O模拟IIC接口(6)

完整的STM32F405代码工程I2C驱动源代码跟踪 一)myiic.c #include "myiic.h" #include "delay.h" #include "stm32f4xx_rcc.h" //初始化IIC void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphCl…