第二原则:依赖倒置职责
? ? ? ? 高层模块:调用者
? ? ? ? 底层模块:被调用者
? ? ? ? 高层模块不依赖于底层模块,二者都依赖于抽象
? ? ? ? 换言之,是面向接口(抽象)编程,不是面向实现编程
例如Graphics(高层模块)依赖了Rectangle(底层模块)违背了依赖倒置原则
如下修改:Graphics(高层模块)就没有依赖任何底层模块,而是依赖于接口(抽象)
并且两个子类(底层模块)也依赖于接口(抽象)
如果想代码更简洁点,可以去除高层模块中的函数参数
将高层模块代码修改为:
同样主函数也需要修改:主函数修改的原因 是因为参数中依赖了Circle(底层模块)
修改为:应该依赖于抽象
End