採用依賴注入和控制反轉的工廠方法
您熟悉工廠方法和依賴注入 (DI) 模式,但需要針對參數化工廠方法中存在大量依賴項的特定情況尋求指導。
問題:參數化工廠的過度依賴
在您的工廠類別中,建構函式需要六個依賴項,並且工廠建立的每個汽車實例都有不同的依賴項集。這使得工廠難以管理,並在 CreateCar
方法中引入了 switch case
語句。
替代方法
您提出了兩種替代方法:將汽車實例直接注入工廠建構子或使用服務定位器。但是,這些解決方案各有缺點。將汽車實例注入違反了工廠設計原則,通常不建議使用服務定位器。
解決方案:用於依賴注入的策略模式
不要在工廠中使用 switch case
語句,而是考慮採用策略模式進行依賴注入。此模式允許您創建多個工廠實現,每個實現專門用於創建特定類型的汽車。
實作:
ICarFactory
和 ICarStrategy
引入介面。 ICarFactory
代表用於建立汽車實例的工廠,而 ICarStrategy
代表工廠集合。 Car1Factory
和 Car2Factory
。這些工廠透過它們的構造函數注入必要的依賴項。 CarStrategy
類,它實作 ICarStrategy
並包含一個 ICarFactory
實例陣列。 CarStrategy
中的 CreateCar
方法迭代遍歷工廠以尋找可以建立請求的汽車類型的工廠。 CarStrategy
實例注入您的程式碼。然後,您可以使用 CreateCar
方法實例化汽車實例,而無需直接指定依賴項。 策略模式的優勢:
switch case
語句以上是如何有效管理參數化工廠方法中過多的依賴關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!