在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
SOLID原则是由罗伯特·C·马丁在21实际早期引入的面向对象编程和面向对象设计的五个基本原则。分别是SRP(单一责任原则)、OCP(开放封闭原则)、LSP(里氏替换原则)、ISP(接口分离原则)、DIP(依赖倒置原则)。它被典型的应用在测试驱动开发商,同时也是敏捷开发以及自适应软件开发基本原则的重要组成部分。下面就跟着小编一起了解一下这五个原则吧。

单一责任原则(SRP)
单一责任原则认为一个类应该只具有一个功能。在程序开发中当需要修改某个类的时候原因有且只有一个。假设这个类需要承当其他类型的责任时,就要分解这个类。类被修改的几率很大,如果把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题,极大的损伤其内聚性和耦合度。
开放封闭原则(OCP)
正常情况下软件实体应该是可被扩展,但是不可以被修改的。这里所说的扩展就是表示开放性,而不可以被修改则是表示封闭性。通常情况下这个原则是程序员在开发过程中诸多面向对象编程原则中最抽象、最难理解的一个。
里氏替换原则(LSP)
程序中的对象应该是可以在不改变程序正确性的前提下被它的子类所替换。里氏替换原则是使代码符合开放封闭原则的一个重要保障。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。客户模块不应关心服务模块的是如何工作的;同样的接口模块之间,可以在不知道服务模块代码的情况下,进行替换。即接口或父类出现的地方,实现接口的类或子类可以代入。
接口分离原则(ISP)
不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。 注意,在代码中应用ISP并不一定以为这服务就是绝对安全的,同样需要采用良好的编码时间,以确保正确的验证与授权。如Java中一个类实现多个接口,不同的接口给不用的客户模块使用,而不是提供给客户模块一个大的接口。
依赖注入或倒置原则(DIP)
依赖注入或倒置原则规定代码应该取决于抽象的概念,而不是具体实现,具体可以分为两条:1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象 ;2. 抽象不应该依赖于细节,细节应该依赖于抽象
这个设计原则的亮点在于任何被DI框架注入的类很容易用mock对象进行测试和维护,因为对象创建代码集中在框架中,客户端代码也不混乱。有很多方式可以实现依赖倒置,比如像AspectJ等的AOP(Aspect Oriented programming)框架使用的字节码技术,或Spring框架使用的代理等。
SOLID原则是非常基础而且重要的面向对象设计原则。面向对象编程思想是初学者学习阶段最大的难题。尤其这些设计原则的理解需要耗费比较长的时间,建议大家能结合实例进行理解。而不是过分的钻研概念的意思。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
C语言编程入门怎么学习?C语言和C++的区别
C语言编程入门怎么学习?C语言和C++的区别,C语言是面向过程,而C++是面向对象。很多人学习c语言直接背语法,连各种高深的算法都死记硬背,大学考计算机二级C语言证书,但并不能真正用c语言编写程序处理问题。想入门C语言编程不能死记硬背,要理论结合实际,学以致用。
9642
2019-08-02 16:08:31
面向对象编程语言有哪些?这些语言都有哪些相似点?
面向对象编程语言有哪些?首先我们要知道,面向对象程序设计的实质是选用一种面向对象程序设计语言(OOPL),采用对象、类及其相关概念所进行的程序设计。面向对象编程语言主要有:Java、Objective-C、C++、PHP、Smalltalk。这些语言的相似点主要体现在:一致的表示方法、可重用性和可维护性。下面就让我们具体来看一下吧!
20907
2019-08-26 10:49:42
什么是服务器?
在计算机领域行业常会听到服务器,也经常会遇到服务器崩溃导致的软件瘫痪和网页崩溃等情况,那么服务器究竟是怎么定义的呢?服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机提供计算或者应用服务。
4764
2020-06-02 14:04:45
删除又恢复?微软怎么惹恼了开源社区?
近日,.NET开源社区“再起波澜”。起因是微软在即将发布的 .NET 6 中悄悄删除了 Hot Reload(热重载) 的核心部分,此举彻底激怒了.NET开源社区开发者,他们强烈反对微软这种行为,认为微软此举是不利于 .NET 开源社区健康发展。
3867
2021-10-25 18:19:27
程序员如何写出简洁清晰标准的代码?
简洁的代码不仅能让阅读者方便理解程序的意图,还能方便维护与迭代,规避冗长且臃肿的代码给人一种乱糟糟的感觉。简洁的代码在维护上花费更少的时间,更易于被阅读和领会,花费更少的时间去弄清楚实际问题进而为修复、修改、以及扩展等操作留下更多的时间;更清晰地交流想法,程序开发离不开协作而简洁的代码往往可以减少项目成员之间可能产生歧义。从长远来看犯更少的错误更快地解决问题。
4621
2022-03-10 15:54:44
