设计模式面向对象设计原则之依赖倒转原则

Posted fzxiaoyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式面向对象设计原则之依赖倒转原则相关的知识,希望对你有一定的参考价值。

引用自:http://blog.csdn.net/lovelion  作者:刘伟

依赖倒转原则(Dependency Inversion  Principle, DIP)上层模块不应该依赖底层模块,它们都应该依赖于抽象.抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程

 

依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情.

 

在实现依赖倒转原则时,我们需要针对抽象层编程,而将具体类的对象通过依赖注入(DependencyInjection, DI)的方式注入到其他对象中,依赖注入是指当一个对象要与其他对象发生依赖关系时,通过抽象来注入所依赖的对象。常用的注入方式有三种,分别是:构造注入,设值注入(Setter注入)和接口注入构造注入是指通过构造函数来传入具体类的对象,设值注入是指通过Setter方法来传入具体类的对象,而接口注入是指通过在接口中声明的业务方法来传入具体类的对象。这些方法在定义时使用的是抽象类型,在运行时再传入具体类型的对象,由子类对象来覆盖父类对象。

 

什么是依赖?

依赖就是二者之间的一种关系,比如程序员写代码需要电脑,如果没有电脑就没法编写代码.

那就可以说程序员依赖于电脑,相应的电脑被程序员所依赖.

 

什么是上层模块,什么是底层模块?

通过职能的重要性来划分,在软件开发中,分为业务层,逻辑层,数据层

业务层:需要做什么样的操作

逻辑层:根据业务层的需求提供具体实现的细节

数据层:业务层与逻辑层之间的数据模型

那业务层就属于上层模块,逻辑层与数据层就属于底层模块

 

什么是抽象?什么是细节?

抽象是相对于具体的物体而言,具体的物体又可以看作是细节

比如表演,可以是跳舞,可以是唱歌,那表演就是抽象,跳舞跟唱歌就是具体的细节

在面向对象里,抽象表现形式就是抽象类或者接口

 

那依赖倒置原则就可以这样理解:

原先依赖关系:上层模块依赖与底层模块

依赖倒置后:  上层模块依赖与抽象,底层模块也依赖与抽象,上层与下层失去了依赖关系

 

以上是关于设计模式面向对象设计原则之依赖倒转原则的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之刘伟老师文章学习记录-------------依赖倒转原则

面向对象编程原则(06)——依赖倒转原则

面向对象编程原则(06)——依赖倒转原则

面向对象的设计模式之依赖倒置原则

设计模式七大原则之依赖倒转原则

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