Java SOLID 设计原则

SOLID是面向对象设计和编程中的几个重要编码原则的首字母缩写

1:开闭原则

2:单一职责原则

3:依赖倒置原则

4:接口隔离原则

5:迪米特法则

6:里氏替换原则

7:合成复用原则

开放封闭原则(OCP)软件体应该是对于扩展开放的,但是对于修改封闭的。通过增加代码来扩展功能,而不是修改已经存在的代码。若客户模块和服务模块遵循同一个接口来设计,则客户模块可以不关心服务模块的类型,服务模块可以方便扩展服务。

单一责任原则(SRP)  一个类只做一种类型责任,当这个类需要承担其他类型的责任的时候,就需要分解这个类。类被修改的几率很大,因此应该专注与单一的功能。如果把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能终止另一个功能,责任越多,可能引起的变化原因就越多,这将导致责任依赖,相互之间产生影响。

依赖倒置原则(DIP)设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并能够降低修改程序所造成的风险。

接口隔离原则(ISP)多个特定客户端接口要好于一个宽泛用途的接口,使用多个专门的接口比使用单一的总接口总要好。客户模块不应该依赖大的接口,应该裁减为小的接口给客户模块使用,以减少依赖性。接口隔离原则符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性 和可维护性。

迪米特法则(LOD)指一个对象应该对其他对象保持最少的了解,又叫最少知道原则。尽量减低类与类之间的耦合。

里氏替换原则(LSP)程序中的对象应该是可以在不改变程序正确性的前提下被它的子类所替换的,子类必须能替换成他们的基类。子类可以扩展父类的功能,但不能改变父类原有的功能。子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。子类中可以增加自己特有的方法。当子类的方法重载父类的方法时,方法的前置条件(即方法的输入/入参)要比父类方法的输入 参数更宽松。当子类的方法实现父类的方法时(重写/重载或实现抽象方法),方法的后置条件(即方法的输出/返回值)要比父类更严格或相等。

合成复用原则(CARP)尽量使用对象组合(has-a)/聚合(contanis-a),而不是继承关系达到软件复用的目的。降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少。

设计原则总结

在实际开发过程中,并不是一定要求所有代码都遵循设计原则,我们要考虑人力、时间、成本、质量,不是刻意追求完美,要在适当的场景遵循设计原则,体现的是一种平衡取舍,帮助我们设计出更加优雅的代码结构。

你可能感兴趣的:(Java SOLID 设计原则)