【C#】SOLID原则

【S】:单一原则,一个类或接口中不能出现两个不同的东西。示例:我有一个工作接口,里面有清洁、写代码两种工作;

然后具体实现时,程序员和清洁工都要继承这个工作接口,但是两者都只需要继承其中一个接口就行,为了实现,将清洁和写代码两个接口分开写,即可理解为单一原则;

【O】:开放原则,我需要扩展某个方法时,不能影响之前的代码,或者说不需要重新修改原有的方法。示例:我定义了一个计算各个形状的面积的方法,我定义一个通用接口计算面积,然后再定义长方形、正方形等类去继承这个面积接口,那么我需要新增一个去几面圆的面积时,我就可以新增一个圆的类去继承这个面积接口。这样我就没有修改原有的类。

【L】:里氏原则:子类完全继承父类所有的,不需要改动。示例同上,当我定义了一个长方形的类,计算正方形的面积公式的前提长!=宽,长x宽。当我用正方形继承长方形时,计算面积的公式适用,但是条件不适用,要改成长=宽,此时,我的子类正方形就会要改父类长方形的东西,那么这就违背了里氏原则,正确的写法就和开放原则的示例一样才可以。

【I】接口隔离原则,和单一原则也差不多,不同的两个东西不要放在一个类或者接口里面

【D】:依赖倒置原则,核心的说法是两个具体的类应该直接依赖抽象才对。类似于接口、服务层、控制层三者的关系。服务类继承接口,控制层注入接口,控制层通过接口来调用具体的方法。这才是正确的关系

以上是我根据以下博文写的笔记,大家看不懂的话,可以直接看原文:SOLID原则:让代码像积木一样灵活可靠

相关推荐
明如正午1 小时前
【C#】volatile 关键字深度解析:为什么我的停止按钮有时失灵?
c#
猿长大人15 小时前
C# | JSON 序列化中的多态接口处理:基于 Attribute 实现精准 $type 控制
c#·json
一位狮子座的程序员19 小时前
如何用RAG解决AI智能体的知识盲区?
开发语言·c#
Nemo_XP20 小时前
C# gridlookupedit选中内容重复还原操作
服务器·前端·c#
猿长大人21 小时前
C# | 函数式编程入门
开发语言·c#·.net
unityのkiven1 天前
C# 中的奇异递归模板模式:MonoSingleton<T> 的实现
java·开发语言·c#
雪隐1 天前
WPF + MVVM 实战系列02-告别 INPC 手写时代,做个体面的现代 WPF 人
前端·后端·c#
我是苏苏1 天前
WPF开发01:基础控件及常用模板篇
开发语言·c#·html·wpf
BerrySen1781 天前
现代 C# 全栈与高性能编程实战指南:从 CLR 底层机制到 AI Agent 智能体架构
人工智能·架构·c#