依赖倒转原则:
高层模块和底层模块都依赖抽象
抽象不依赖细节,细节依赖抽象
实例:常用代码写成程序库,比如对数据库访问做成低层模块,高层去掉用低层就可以
问题产生的原因:高层业务逻辑相同时,希望使用不同数据库,希望再利用高层模块,但高层模块与低层的访问数据库绑定在一起了。
如果cpu依赖主板,主板坏了,所有部件没用了。
本质:高层模块->接口/抽象类
1
低层模块
除了约定的接口,谁也不依赖谁
里氏代换原则:
子类型必须能够替换掉他们的父类型
实例:如果企鹅继承于鸟,则企鹅就会飞
动物
猫
扩展后变为:
动物
猫,狗,牛,羊
本质:由于子类型的可替换性才使得使用父类可以扩展