問題:
您熟悉工廠方法模式,但在管理工廠建構函式中的大量依賴項時面臨挑戰。您嘗試將特定的汽車類別注入工廠,但這違反了工廠原則。您也不願使用服務定位器,因為它以反模式而聞名。
解:
此場景最適合的方法是策略模式。此模式可讓您的 DI 容器將依賴項注入到屬於它們的工廠實例中,從而無需使用服務定位器或以依賴項使其他類別混亂。
介面:
<code>public interface ICarFactory { ICar CreateCar(); bool AppliesTo(Type type); } public interface ICarStrategy { ICar CreateCar(Type type); }</code>
工廠:
<code>public class Car1Factory : ICarFactory { private readonly IDep1 dep1; private readonly IDep2 dep2; private readonly IDep3 dep3; // ... 构造函数和实现 } public class Car2Factory : ICarFactory { private readonly IDep4 dep4; private readonly IDep5 dep5; private readonly IDep6 dep6; // ... 构造函数和实现 }</code>
策略:
<code>public class CarStrategy : ICarStrategy { private readonly ICarFactory[] carFactories; public CarStrategy(ICarFactory[] carFactories) { // ... 构造函数和实现 } }</code>
用法:
<code>var strategy = new CarStrategy(new ICarFactory[] { new Car1Factory(dep1, dep2, dep3), new Car2Factory(dep4, dep5, dep6) }); var car1 = strategy.CreateCar(typeof(Car1)); var car2 = strategy.CreateCar(typeof(Car2));</code>
優勢:
以上是依賴注入如何解決具有許多依賴項的工廠方法挑戰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!