我们必须实现能够创建多个复杂对象的工厂。 我们应该如何处理它与依赖注入?用工厂方法处理依赖注入DP
我已经阅读了许多有关它在stackoverflow(和其他地方)的主题,特别是马克·塞曼的,但不能作出任何决定,所以需要你的意见。
例如:
<?php
class EventFactory
{
public function createEvent($type)
{
switch ($type) {
case 'upload':
return new UploadEvent(new FtpUploader(), new Mailer());
case 'download':
return new DownloadEvent(new FtpDownloader(), new Mailer());
case 'save':
return new SaveEvent(new EventDbModel());
case 'load':
return new LoadEvent(new EventDbModel());
case 'notify':
return new NotifyEvent(new HttpRequester());
}
}
}
我发现了一些解决方案,但不知道该选哪一个。
- 解决方案就像在这个例子中一样,可以让工厂负责实例化依赖关系。
问题:与不使用依赖注入相同的问题。
- 另一个是给依赖于工厂的构造
- 我在互联网上发现的第三种解决方案是创建一种建造者而不是事件。工厂有责任知道要创建哪种对象,并且建造者将知道如何创建它们。
问题:将有大量的在构造参数和列表可以长大
问题:构建器DP的角色是否处理依赖关系?我害怕得到与解决方案#1相同的问题。
我们该怎么办?
本
很多很好的问题产生一定程度的基于专家经验的意见,但这个问题的答案将趋于几乎完全基于意见,而不是事实,引用或专门知识。 – Epodax
@Epodax:你自己的意见是什么? –
你的问题是离题。 – Epodax