我们必须实现一个能够创建多个复杂对象的工厂。我们应该如何使用依赖注入来处理它?
我已经在 stackoverflow(和其他地方)中阅读了许多关于它的主题,尤其是 Mark Seemann 的主题,但无法做出任何决定,因此需要您的意见。
例如:
<?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());
}
}
}
我找到了一些解决方案,但不知道该选择哪一个。
- 一个解决方案是,就像在示例中一样,让工厂负责实例化依赖项。
问题:与不使用依赖注入相同。
- 另一种是给工厂构造函数提供依赖
问题:构造函数中的参数会很多而且列表会变大
- 我也在互联网上找到的第三种解决方案是创建一种构建器而不是事件。工厂负责知道要创建哪种对象,而构建者将知道如何创建它们。
问题:builder DP的角色是处理依赖关系吗?我害怕遇到与解决方案 #1 相同的问题。
我们应该做什么 ?
本