设计模式三大原则

单一原则

类的职责要单一,一个类完成一项功能

类本身就是一组属性和行为的集合。是一组,不是多组

开闭原则(单一原则的扩展)

对外扩展开放,对内修改关闭

即为:
1. 尽量不修改已经实现或者定义好的类,因为这个类既然已经完成实现应用在项目中,证明它会被其他许多地方调用。当修改这个类后,原本的逻辑就可能会出现问题,这个时候维护就很难了
2. 完成一个职责的类外可以定义其他类来实现不同的职责,尽可能做到一个类解决一个问题。术业有专攻

如何实现原本的类来调用其他类来实现不同的功能呢?在设计时要预留足够的接口,方便可以调用其他类来实现不同的功能。

依赖倒转原则

定义:

  1. 高层模块不应该依赖低层模块,两者都应该依赖抽象
  2. 抽象不应该依赖细节,细节应该依赖抽象

第一点解释,举个例子
高层模块可以理解为应用程序,低层模块可以理解为API。

在实现过程中,我们写的应用程序不要直接调用低层的接口,比如数据库MySQL接口。否则当数据库更换成Oracle时,我们需要对修改掉所有调用MySQL的接口(与Oracle不同的地方)
我们可以在应用程序和低层模块接口的地方设计一个抽象类,这个抽象类负责提供调用数据库接口的方法,而继承这个抽象类的子类则可以重写这些方法,是MySQL就调用MySQL的接口,是Oracle就调用Oracle相关的接口,两者互不干涉,这样修改的地方就少了

里氏替换原则

要解释第二点必须先了解里氏替换原则

只需要了解对应是含义:
子类必须能够替换它的父类类型

这代表着:父类中定义的属性和行为在子类都是完全适用的。父类的设计要设计这个事物的共性,特性放在子类作为延伸。
所以,第二点中,抽象 ->抽象类提供事物的共性(虚函数),具体特性(虚函数重写)由子类完成,而细节 -> 子类既能被父类指针指向,同时也能调用重写好的虚函数

不满足里氏替换原则即不满足依赖倒转原则

依赖倒转原则总结

1. 抽象类提供接口的数量固定不变
2. 低层模块是抽象类的子类,继承了抽象类的接口,重写了抽象类的函数
3. 高层模块想要实现的某些功能通过多态来实现(父类指针指向子类对象)

相关推荐
多弗朗皮卡丘3 小时前
C++特殊类设计
开发语言·c++·设计模式
Carl_奕然4 小时前
【智能体】Loop 的四种设计模式之:Verification Loop(2026 最新版)
人工智能·python·设计模式
是2的10次方啊5 小时前
设计模式与生活③:你的早晨,是一套模板
设计模式
.Hypocritical.1 天前
JUC + 三大设计模式(单例、工厂、代理)
设计模式·juc·1024程序员节
是2的10次方啊1 天前
设计模式与生活②:你只管点外卖,别管堡怎么做
设计模式
是2的10次方啊2 天前
设计模式与生活①:你的脸,为什么不能有第二个?
设计模式
高晶2 天前
ARM 嵌入式 Linux 命令系统 BusyBox 实战指南
linux·设计模式·程序员
高晶2 天前
语音合成与变声技术十大业务场景落地实战:从电商直播到规模化生产
设计模式·程序员
博风2 天前
19、设计模式应用举例:桥接模式:制作电视节目
设计模式·桥接模式
知守观2 天前
从 4 套 PDF 库的混战,聊聊老项目的依赖管理与“静默失败”
java·后端·设计模式