如何克服构造函数中依赖过多的类?

问题描述 投票:0回答:1

我有一个 Python 项目,其中有一个 Car 类,该类具有一个具有多个状态的主状态机。而且,Car类有多个系统。这些系统包括发动机、变速箱、制动器、仪表板、立体声系统等。在每个状态的转换期间,我都有进入和退出操作,这些操作对这些系统进行一些操作。但除此之外,我还应该能够通过检查我目前所处的状态来单独控制系统。

如您所见,我有多个系统,并将它们作为依赖注入传递给我的 Car 类会导致构造函数膨胀,这表明责任过多。这个问题我需要解决。

我尝试通过将类似的系统移到外观类后面来解决这个问题,但我在这里发现的问题是,对于某些系统,构成这些系统的组件也需要单独进行控制器。这里有一个例子:

我们有一个由另外两个系统组成的系统。在外观中,我可以调用方法激活系统,该方法将激活该外观系统后面的两个系统,但有时我需要能够彼此单独激活它们。现在,我可以在外观类中再有 2 个方法分别激活每个系统,但我感觉我正在打破外观模式背后的原则。

我想一般来说我可以解释我的问题,因为我有一个类,它有许多需要的依赖项,我尝试将它们移到立面后面,但在一些立面之后,我需要直接在主类中调用更多行为,但是那么这使得我的代码真正嵌套在多个外观中。

python dependency-injection constructor facade
1个回答
0
投票

看起来你已经陷入了干净代码地狱:)当你尝试注入所有东西时,这种“膨胀”是典型的。很常见的是,有一些对象可以处理这种注入,并且它们被称为“依赖注入器”,这并不奇怪。例如,请参阅此项目

老实说,我会尝试简化。我不会注入所有东西,除非这是一个学习单元测试、抽象的项目,或者你的教授/技术主管真的是一个纯粹主义者。

请记住,过早的抽象(和优化)是万恶之源。

© www.soinside.com 2019 - 2024. All rights reserved.