12.1.5 DIP:依赖倒置原则

依赖倒置原则(DIP)指出,代码应依赖抽象。通常,术语依赖倒置和依赖注入似乎可以互换使用。但是,在讨论此原则时,需要理解以下一些关键术语:

·依赖倒置——倒置依赖关系的原则

·依赖注入——倒置依赖关系的行为

·构造函数注入——通过构造函数执行依赖注入

·参数注入——通过方法的参数执行依赖注入,就像setter

依赖倒置的目标是将抽象的东西而不是具体的东西组合起来。

尽管显然在某些时候必须创建一些具体的对象,我们努力最晚创建尽可能具体的对象(通过使用new关键字),例如在main()方法中。对此有一种更好的思考方式,可重新阅读第8章的内容,在该章中我们讨论了在运行时加载类,以及第9章,我们在其中讨论了解耦和创建职责有限的小类。

同样,依赖倒置原则的目标之一是在运行时而不是在编译时选择对象(你可以在运行时更改程序的行为)。你甚至可以编写新类而不必重新编译旧类(实际上,你可以编写新类并将其注入)。

第11章中的内容为此讨论打下了基础。我们基于第11章来考虑依赖倒置原则。

步骤1:初始示例

对于本示例的第一步,我们再次回顾本书中使用的经典的面向对象设计示例之一,即Mammal类以及继承自哺乳动物的Dog和Cat类。Mammal类是抽象的,并且包含一个名为makeNoise()的方法。

诸如Cat等子类使用继承来获取Mammal类的行为,即makeNoise():

主应用程序实例化了一个Cat对象并调用了makeNoise方法:

初始示例完整的应用程序代码如下所示: ...

Get 面向对象的思考过程(原书第5版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.