SOLID设计原则

发布时间 2023-06-01 16:19:17作者: 186的博客

单一责任原则(SRP)
一个类只能有一个职责(一个功能)
![U7I(QNLB{I@T{RHTHJ4)22.png
例子:支付接口(支付有非常多中方式但是每一种方式都是支付)此时就需要让抽象类去调用需要调用的类,而不是调用一个类,类中包含的非常多的功能
优点:减少类中不相关功能的代码耦合,使得类更加的健壮;另外,单一职责原则也适用于模块之间解耦,对于模块的功能划分有很大的指导意义
开闭原则(OCP)
开闭式原则其实在做出单一原则的时候就已经在实现开闭原则了
8758f228-31b2-4092-9aa5-396f9ba7871b.jpg
抽象父类可以调用单一原则的子类,而固定有的子类里面的功能就不需要再子类里面再去修改或者是去再已有的子类内部去构造新的功能,正确的做法应该是在存放单一原则子类的包中去新增子类,在新增子类中写新的功能
优点: 有了开闭原则,面向需求的变化就能进行快速的调整实现功能,这大大提高系统的灵活性,可重用性和可维护性

里氏替换原则(LSP)
在共同的方法中提取到父类中去
在里式替换原则中,父类有的行为方法是稳定的
所以子类不应该去重写这些稳定的方法
image.png
父类中固定的子类是不能去进行修改的(例子:父类有一个抽象子类对象<鸟>以及固定的功能动作<鸟会飞>)但是当父类固定的子类中出现了多个功能原则首先会违反单一原则以及开闭原则,如果要实现父类中可调用多个子类对象的话可以抽象到子类中去然后让父类进行固定子类中的调用。
换句话说就是子类可以扩展功能,但是不能对父类的功能做出修改
优点: 里氏替换原则目的就是要保证继承关系的正确性,所有子类的行为功能必须和使用者对其父类的期望保持一致,如果子类达不到这一点,那么必然违反里氏替换原则
接口隔离原则(ISP)
代码开发中客户端需要依赖的接口一定是要有实际运用的,其次这些接口功能都放在单一的一个接口中的话,代码会十分的臃肿。接口隔离原则就是让这些接口能放在一个软件包中,如果有需要则调用其中的接口,接口隔离原则也包括单一原则,里式替换原则等等
008i3skNgy1gu0u8iwfj3j612h0u0wh102.jpg![%UVT%OVQ58J6$`R3V%56O9.png
优点: 防止暴露给客户端无相关的代码和方法,保证了接口的高内聚,降低与客户端的耦合。
依赖倒置原则(DIP)
父类并不会直接依赖子类,而是通过抽象工具类来进行依赖,首先能遵循前面的设计原则其次也可以保证高层与底层、抽象层的关系image.png
优点: 依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。