依赖倒转原则:
》》高层模块不应该依赖低层模块,两个都应该依赖抽象。
》》抽象不应该依赖细节,细节应该依赖抽象。
两点都说明了同一个问题,就是:程序中的依赖关系都应该终止于抽象类或者接口,而不能终止于实现细节的具体类。
高层模块与低层模块之间插入一个抽象类或者接口,让两个模块同时依赖于抽象,这样就实现了高层模块和低层模块之间的解耦,而且在需求发生变化的时候,也利于两个模块的复用。
就好比计算机,都是基于接口的设计,接口就是标准,就是规范。当某个设备出现了问题或者我们要升级某个设备,我们只需要找到匹配此设备所依赖接口的部件即可。这样做的同时,也不会影响到其他设备的工作。
里氏代换原则:
》》子类型必须能替换掉他们的父类型。
也就是说,把父类都替换成他的子类,程序的行为没有变化。
里氏原则通俗的讲就是:子类可以扩展父类的功能,但不能改变父类的原有功能。因此,子类尽量不要重写或者重载父类方法。