五大设计原则——SOLID

目录

简介:

1、单一职责原则(SRP)

2、开闭原则(OCP)

3、里式替换原则(LSP)

4、依赖倒置原则 (DIP)

5、接口隔离原则 (ISP)


简介:

无论是软件系统设计,还是代码实现,遵循有效和明确的设计原则,都利于系统软件灵活可靠,安全快速的落地,更重要的是能灵活应对需求的变化,更好的扩展系统以及维护。因此提出了五大设计原则-SOLID(五大设计原则是面向对象的根基 )。


1、单一职责原则(SRP)

单一职责原则(SRP)英文全称为 Single Responsibility Principle 是最简单,但也是最难用好的原则之一。它的定义也很简单:对于一个类而言,应该仅有一个引起它变化的原因。其中变化的原因就表示了这个类的职责,它可能是某个特定领域的功能,可能是某个需求的解决方案。这个原则表达的是不要让一个类承担过多的责任,一旦有了多个职责,那么他就越容易因为某个职责而被更改,这样的状态是不稳定的,不经意的修改很可能影响到这个类的其他功能,因此,我们需要将不同的职责封装到不同的类中,即将不同的变化原因封装在不同的类中,不同类之间的变化互不影响。

总结:

单⼀职责原则⽤于控制类的粒度⼤⼩,减少类中不相关功能的代码耦合,使得类更加的健壮;另外,单⼀职
责原则也适⽤于模块之间解耦,对于模块的功能划分有很⼤的指导意义。
简单来说就是让代码高内聚,低耦合。

2、开闭原则(OCP)

开闭原则 (OCP) 英⽂全称为 Open-Closed Principle ,基本定义是软件中的对象(类,模块,函数等)应该对于扩展是开放的,但是对于修改是封闭的。这里的对扩展开放 表示添加新的代码,就可以让程序行为扩展来满足需求的。
变化; 对修改封闭 表示在扩展程序行为时不要修改已有的代码,进而避免影响原有的功能。要实现不改代码的情 况下,仍要去改变系统行为的关键就是抽象和多态,通过接口或者抽象类定义系统的抽象层,再通过具体类来进行扩展。这样⼀来,无须对抽象层进行任何改动,只需要增加新的具体类来实现新的业务功能即可,达到开闭原则的要求。
总结:有了开闭原则,面向需求的变化就能进行快速的调整实现功能,这大大提高系统的灵活性,可重用性和可维护性,但会增加⼀定的复杂性。

3、里式替换原则(LSP)

里式替换原则 (LSP) 英文全称为 Liskov Substitution Principle ,基本定义为:在不影响程序正确性的基础上,所有使用基类的地方都能使用其子类的对象来替换。这里提到的基类和子类说的就是具有继承关系的两类对象,当我们传递⼀个子类型对象时,需要保证程序不会改变任何原基类的行为和状态,程序能正常运作。
里式替换原则目的就是要保证继承关系的正确性,所有⼦类的行为功能必须和使⽤者对其父类的期望保持一 致,如果字类达不到这⼀点,那么必然违反里氏替换原则。要让程序代码符合里式替换原则,需要保证⼦类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法,换句话就是子类可以扩展父类的功能,但不能改变父类原有的功能。

4、依赖倒置原则 (DIP)

依赖倒置原则 (DIP) 英⽂全称 Dependency Inversion Principle, DIP) ,基本定义是:
高层模块不应该依赖低层模块,两者应该依赖抽象;
抽象不应该依赖细节,细节应该依赖抽象。

这⾥的抽象就是接⼝和抽象类,⽽细节就是实现接⼝或继承抽象类⽽产⽣的类。如果⾼层模块依赖于低层模块,那 么低层模块的改动很有可能影响到⾼层模块,从⽽导致⾼层模块被迫改动,这样⼀来让⾼层模块的重⽤变得⾮常困 难。因此可以在⾼层模块构建⼀个稳定的抽象层,并且只依赖这个抽象层;⽽由底层模块完成抽象层的实现细节。 这样⼀来,⾼层类都通过该抽象接⼝使⽤下⼀层,移除了⾼层对底层实现细节的依赖。

5、接口隔离原则 (ISP)

接口隔离原则 (ISP) 英文全称为 Interface Segregation Principle ,基本定义:客户端不应该依赖那些它不需要的接口。客户端应该只依赖它实际使用的方法,因为如果⼀个接⼝具备了若干个方法,那就意味着它的实现类都要实现 所有接口方法,从代码结构上就十分臃肿。

总结:接口隔离原则主要功能就是控制接口的粒度大小,防止暴露给客户端无相关的代码和方法,保证了接口的高内聚,降低与客户端的耦合。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值