依赖反转原则在实践中所指的是,在一个系统中,高级别组件应该依赖于底层组件的抽象(而不是直接依赖于底层组件),而底层组件应该根据这些抽象来定义。
我问题的关键点是,低级组件是用抽象来定义的,抽象是用高级组件来定义的。意思:高级组件“定义抽象”是为了方便它们,而底层组件必须根据抽象定义(通常是一个接口)。
因此,如果高级组件是Car
,而底层组件是Engine
,并且定义了接口IEngine
--它将根据Car
的需要定义,Engine
必须满足这些需求。因此,如果Car
能够简单地启动引擎是方便的,那么IEngine
将提供一个方法start()
,Engine
必须实现它。
我的问题是:
在根据依赖反转原理设计的项目上开始编程时,高层组件通常是在低级组件之前实现的,即。“自上而下”的发展?
由于该原理意味着低层组件的设计是根据高层次组件的方便性而设计的,因此,首先开始对高级组件进行编程,然后根据我们在编程时所了解到的高级组件所需的内容,定义ILowLevelComponent
接口是有意义的。
例如,我们正在实现一个模拟汽车的系统。Car
是高级组件,而Engine
和SteeringWheel
是底层组件。Engine
和SteeringWheel
负责移动汽车的具体工作,而Car
负责协调一切并创建一个功能良好的系统。
如果我们是按照DIP来设计系统,这意味着Engine
和SteeringWheel
是用抽象定义的,而抽象是根据Car
的方便定义的。
因此,首先实现Car
是有意义的,准确地理解它将如何在高级术语中工作以及它需要什么工作,然后根据Car
的需要定义IEngine
和ISteeringWheel
接口。当然,还可以实现实现接口的具体类。
发布于 2014-04-30 19:44:51
它通常不是用石头写的:
https://softwareengineering.stackexchange.com/questions/237526
复制相似问题