【设计模式】依赖倒转原则
以下内容来自【Java设计模式】
如果说开闭原则是面向对象设计的目标,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。依赖倒转原则是Robert C. Martin在1996年为C++Reporter所写的专栏Engineering Notebook 的第三篇,后来加入到他在2002年出版的经典著作 Agile Software Development, Principles, Patterns, and Pratices一书中。
依赖倒转原则定义如下:
依赖倒转原则
:高层模块不应该依赖底层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
简单来说,依赖倒转原则要求针对接口编程,不要针对实现编程。
依赖倒转原则要求在程序代码中传递参数时或在关联关系中尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情
。为了确保该原则的应用,一个具体类应当只实现接口或抽象类中声明过的方法,而不要给出多余的方法,否则将无法调用到子类中增加的新方法。
在引入抽象层后,系统将具有更好的灵活性,在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中,这样如果系统行为发生变化,只需要对抽象层进行扩展,并修改配置文件,而无须修改原有系统的源代码,在不修改的情况下来扩展系统的功能,满足开闭原则的需求。
在实现依赖倒转原则时需要针对抽象层编程,而将具体类的对象通过依赖注入的方式注入到其它对象中,依赖注入是指当一个对象要与其他对象发生依赖关系时采用抽象的形式注入所依赖的对象。常用的注入方式有3种,分别是构造注入,设置注入(Setter注入)和接口注入。构造注入是指通过构造函数来传入具体类的对象,设值注入是指通过Setter方法来传入具体类的对象,而接口注入是指通过在接口中声明的业务方法来传入具体类的对象。这些方法在定义时使用的是抽象类型,在运行时再传入具体类型的对象,由子类对象来覆盖父类对象。
2 设计模式的七大原则
【设计模式】单一职责原则
【设计模式】开闭原则
【设计模式】里氏替换原则
【设计模式】依赖倒转原则
【设计模式】接口隔离原则
【设计模式】合成复用原则
【设计模式】迪米特法则
网友评论