问题:
您熟悉工厂方法模式,但在管理工厂构造函数中的大量依赖项时面临挑战。您尝试将具体的汽车类注入工厂,但这违反了工厂原则。您也不愿使用服务定位器,因为它以反模式而闻名。
解决方案:
此场景最合适的方法是策略模式。此模式允许您的 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中文网其他相关文章!