我們必須實現能夠創建多個複雜對象的工廠。 我們應該如何處理它與依賴注入?用工廠方法處理依賴注入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