这里有一个问题,假设我们正在制作一款视频游戏,并希望使用依赖注入。以下是我们的情况:
Game Class // This is just the code to keep track of the overall game logic
Character Class // This would be the guys in the game, good and bad guys both
Weapon Class // The weapons for the characters
通常情况下,当我进行依赖注入时,我会将地图上的当前位置和游戏状态注入到角色中,这样我的角色就有了知道如何创建自身等信息。然后,我让角色创建武器并注入武器强度等值以及来自Game类的其他通用游戏状态。
对我来说,这几乎像是一种反模式。我之所以这么说是因为现在你有(至少在我看来是这样)非常脆弱且难以更改的代码。如果我们想要更改传递的游戏状态信息,我们必须更改所有三个类。我们首先对Game类进行原始更改,然后修改Character类,最后还要修改Weapon类。如果您需要深入5层而不仅仅是3层,那么这将是很多工作量。尽管使用依赖注入比不使用更容易进行单元测试。
这似乎又是一种不好的实践方式。这是通常的做法吗?如果我们有一种“MotherShip”模式,其中所有内容都处于顶层,会怎样呢?因此,我们可以让游戏类(或其他类)创建所有内容,而不是让游戏创建角色创建武器。
这样,如果我们想要为角色添加新武器,游戏类可以直接创建并注入武器。对于这个问题,我们不确定该怎么做。谢谢!