SOLID原则:
s单一责任原则
o开闭原则
l里氏替换原则
i接口分离原则
d依赖倒置原则
参考自面向对象设计的SOLID原则
里氏替换原则:
当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系. 以下参考https://www.cnblogs.com/wang-can/archive/2013/10/01/3348302.html
通俗的定义:子类可以扩展父类的功能,但不能改变父类原有的功能,就是不要去重写父类的方法。
里氏替换原则包含以下4层含义:
1,子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
2,子类中可以增加自己特有的方法。
3,当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
4,当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
第1,2层意思好理解。第4层意思也在实践中得到了确认:当子类中的覆盖的方法的返回类比父类中对应方法的返回类型更宽松,JAVA程序是编译不通过的。唯独第3层意思有些奇怪,我在实践中发现,不论是子类方法的形参类型是比父类中对应方法的类型严格或宽松(其实此时两方法不属于覆盖关系,证据是子类方法上加@Override会编译报错),最终客户端代码调用的都是父类方法
依赖倒置原则(Dependence Inversion Principle):
1、高层模块不应该依赖底层模块,二者都应该依赖抽象。
2、抽象不应该依赖细节,细节应该依赖抽象。
3、依赖倒置的中心思想是面向接口编程。
4、依赖倒置原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础搭建的架构要稳定的多。
5、使用接口或抽象类的目的是指定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类来完成。
接口分离原则可参考下文
https://blog.csdn.net/Hurricane_m/article/details/89321976