DIP(Dependency Inversion Principle)
定义:高层模块不应该依赖于底层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
当高层的Pollcy 使用底层的Mechanlsm, 而Mechanlsm又使用更细节的Utility时。Pollcy对于其下任何一层的改动都是敏感的。这种设计其实非常糟糕。
高层中以接口的方式去使用底层的功能,而底层则实现了这些接口。这样高层就不直接依赖于底层,对于底层的改动不会太敏感。
总结:这种依赖倒置原则正是面向对象设计的标志所在,它的正确使用对于设计可重用框架来说是必须的,同时由于抽象和细节彼此隔离,也使得代码更容易维护。