软件构造:SOLID设计原则
SOLID设计原则
软件构造的过程中有五大设计原则。按照这五条设计原则设计出来的程序,具有优秀的健壮性、可复用性、可拓展性和安全性。SOLID设计原则具体包括:SRP(The Single Responsibility Principle)单一责任原则、OCP(The Open-Closed Principle)开放-封闭原则、LSP(The Liskov Substitution Principle)里氏替换原则、ISP(The Interface Segregation Principle)接口隔离原则、DIP(The Dependency Inversion Principle)依赖转置原则。接下类,我来具体介绍一下每条原则:
1.单一责任原则(SRP)
单一责任原则的定义是:一个类只允许有一个责任,即只有一个导致该类发生变更的原因。如果有多个原因则将它们拆分开来,加强类的内聚性。类职责的变化往往是导致类变化的原因:也就是说如果一个类具有多种职责,就会有多种导致这个类变化的原因,从而导致这个类的维护变得困难。通过遵循单一责任原则,我们不但可以提高代码的可读性,也实际性的降低了程序出错的风险。
2.开放-封闭原则(OCP)
OCP原则包括两个方面:一是对拓展性的开放,即模块的行为应该是可拓展的,模块可表现出新的行为以满足需求的变化。二是对修改的封闭:模块自身的代码是不应被修改的,需要去拓展出新的类然后调用新的类。OCP原则典型的应用,就是我上一篇博客所讲的面向可复用性编程的几种模式,感兴趣的同学可以去看看。
3.里氏替换原则(LSP)
里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。里氏替换原则具体体现为,子类方法的参数是父类参数的逆变,返回值是父类型的协变,作用域不能小于父类型,抛出的异常不能比父类型更宽泛,如果父类型没有抛出任何异常,子类型必须捕获所有的checked异常。
4.接口隔离原则(ISP)
ISP原则的定义是:不能强迫客户端依赖于它们不需要的接口,只提供必须的接口。这种原则可以避免接口的污染,防止接口的参数过多,产生“胖接口”。在出现胖接口时,我们可以将胖接口分解成多个只需要较少参数的小接口,通过不同的接口向客户端提供不同的服务,客户端只需要调用自己需要用到的接口。这种设计原则减轻了客户端程序开发的负担,同时也提升代码的可读性。
5.依赖转置原则(DIP)
依赖转置原则包括两个方面:一是高层模块不应该依赖于底层模块,二者都应该依赖于抽象。二是抽象不应该依赖于实现细节,实现细节应该依赖于抽象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异