图解依赖注入由来及分类

①、什么是耦合度/耦合性?

模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。

示例展示:

上图中的Top类与Underly类就属于强耦合关系,即当Underly类中的构造函数变更之后,如:更改为带参数的构造函数,Top类中的代码也需要跟着改变。

②、上图中的UML图与我们哪个设计模式相悖?

依赖倒置原则:高层模块(Top)不应该依赖于低层模块(Underly),他们都应该依赖于抽象(IUnderly)。

那上面的这个UML图要如何优化呢?

我们要让Top类面向接口,Underly类实现接口。这样便做到了他们都依赖于抽象。

③、依赖倒置原则中的:抽象不应该依赖于具体,如何理解?

如果换成另一种解释我们可能会好理解一些:抽象类或接口中最好不要有具体类的出现,即使是返回值类型也最好是抽象类。

如下图中红色字体标识的,CreateWriterInstance( )方法是创建一个Writer具体类实例,在接口中我们最好采用抽象,即让返回值类型是IWriter接口,而非Writer具体类。

④、依赖倒置原则中的:具体应该依赖于抽象,又如何理解?

具体类中如果要依赖其他类,最好是依赖抽象。但在我们第二张图中我们遗留一个悬念:虽然Top类看似是依赖于IUnderly接口了,但在Top类的代码中依旧出现了具体类的实例化。这样就违背了“具体应该依赖于抽象”,Top类还是依赖了Underly类的构造函数,那要如何解决呢?

依赖注入闪亮登场!

⑤、依赖注入要如何理解?依赖是什么?注入的又是什么?

以我们上图中的Top类和Underly类来进行分析,针对Top类来讲它依赖Underly类,注入就是将Underly类注入到Top类中。

⑥、如何注入呢?

依赖注入分为三种注入方式:构造函数注入,属性注入,接口注入

构造函数注入:

属性注入:

接口注入:

汇总:依赖注入就是将Top类依赖的Underly对象,通过Top的构造函数进行参数注入、通过Top的属性注入、通过Top实现的IQuote方法注入。

      


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部