我是否需要在这里使用依赖注入容器?

4
我需要在程序开始时设置以下依赖项:

我有以下依赖项需要在程序开始时设置:

//Set up dependencies
$fileSettings  = array(12, 'extra_lines', 'close_on_save');
$exporter      = new Exporter('exporterpath/filename.txt', $fileSettings);
$outputStream  = new OutputStream();
$businessModel = new BusinessModel('param1', 'param2');

//Run application
$application   = new Application($exporter, $outputStream, $businessModel);
$application->start();

在这里,您可以看到我的主应用程序有几个依赖项,并且这是引导时需要注入所有必需内容的代码。

这是否需要一个依赖注入容器?

如果不需要,工厂模式是否更合适?

1个回答

2
这是一篇很好的依赖注入文章(甚至还是 PHP 的!)。

http://fabien.potencier.org/article/12/do-you-need-a-dependency-injection-container

从这篇文章中可以看出: 大多数情况下,您不需要使用依赖注入容器来实现依赖注入。 但是,当您需要管理许多具有许多依存关系的不同对象时,依赖注入容器可以非常有帮助(例如考虑一个框架)。 我认为正确答案与您的场景有多复杂有关。在某些时候,必须有某个地方知道如何组合所有内容。如果变得繁琐且难看,则可能是使用容器的时候了。 事实上,您并不一定需要容器。通常之所以使用容器,是因为它提供了灵活性。

那么根据我展示的对象,你认为是否需要一个 DI 容器呢?我不太喜欢那篇文章,因为它看起来更像是一种工厂模式。但我只是在学习阶段,所以显然我是有误解的。 - user1526099
必须要吗?不是。但为了后续的灵活性和可维护性,这是一个好主意。 - Bob Horn
在我看来,对于你的情况,保持现状是完全可以接受的。如果只是这样,就让它保持原样吧。但下次需要增加复杂性时,考虑使用容器。 - Bob Horn
谢谢,因为我最不想做的事情就是为了复杂化而复杂化。我认为过度设计某些东西实际上会让人觉得你不知道自己在做什么。 - user1526099

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接