采用依赖注入和控制反转的工厂方法
您熟悉工厂方法和依赖注入 (DI) 模式,但需要针对参数化工厂方法中存在大量依赖项的特定情况寻求指导。
问题:参数化工厂的过度依赖
在您的工厂类中,构造函数需要六个依赖项,并且工厂创建的每个汽车实例都有不同的依赖项集。这使得工厂难以管理,并在 CreateCar
方法中引入了 switch case
语句。
替代方法
您提出了两种替代方法:将汽车实例直接注入工厂构造函数或使用服务定位器。但是,这些解决方案各有缺点。将汽车实例注入违反了工厂设计原则,并且通常不建议使用服务定位器。
解决方案:用于依赖注入的策略模式
不要在工厂中使用 switch case
语句,而是考虑采用策略模式进行依赖注入。此模式允许您创建多个工厂实现,每个实现专门用于创建特定类型的汽车。
实现:
ICarFactory
和 ICarStrategy
引入接口。ICarFactory
代表用于创建汽车实例的工厂,而 ICarStrategy
代表工厂集合。Car1Factory
和 Car2Factory
。这些工厂通过它们的构造函数注入必要的依赖项。CarStrategy
类,它实现 ICarStrategy
并包含一个 ICarFactory
实例数组。CarStrategy
中的 CreateCar
方法迭代遍历工厂以查找可以创建请求的汽车类型的工厂。CarStrategy
实例注入您的代码。然后,您可以使用 CreateCar
方法实例化汽车实例,而无需直接指定依赖项。策略模式的优势:
switch case
语句以上是如何有效管理参数化工厂方法中过多的依赖关系?的详细内容。更多信息请关注PHP中文网其他相关文章!