大话设计模式------依赖倒转原则

1、定义:

程序要依赖于抽象接口,不要依赖于具体实现。简单地说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

2、抽象不应该依赖细节,细节应该依赖于抽象,即针对接口编程,不要对实现编程。

3、高层模块(例如CPU、内存、硬盘、程序中的主代码)不应该依赖于低层模块(例如主板、做项目时数据库代码封装成的低层函数等),因为这样,如果低层模块发生改变,则高层模块便不能再被复用。

4、为什么高层模块依赖了抽象的接口或抽象类,就不怕低层模块更改呢?

里氏代换原则:子类型必须能够替换掉它们的父类型(注:子类拥有父类所有非private的行为和属性,因为企鹅不会飞,不能继承鸟类的飞行方法,所以企鹅不是鸟的子类)。是抽象化的具体实现,而“开放-封闭原则”的关键步骤就是抽象化。

只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。

由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。

高层模块依赖于接口或抽象类,低层模块继承于接口或抽象类。

5、依赖倒转其实可以说是面向对象设计的标志,用哪种语言来编写程序不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之那就是过程化的设计了。

6、无论是高层还是底层都应该依赖于抽象类或接口,这样只有接口是稳定的,那么无论高层或底层发生改变,都没有关系,底层或高层都很容易被复用。

7.结构图