工厂设计模式是否违反了C#中solid原则的依赖注入?

问题描述 投票:0回答:1

根据定义,依赖注入促进了松散耦合、可维护和可测试的代码,并且使用接口和构造函数注入我们可以获得实现接口的类的对象。

但是当我们实现工厂时,我们根据工厂方法中传递的 Type 创建对象 例如:

interface IVehicle
{
    int WheelCount();
}

class car : IVehicle
{
    int WheelCount() 
    { }
}

class bike : IVehicle
{
    int WheelCount()
    { }
}

class factory
{
    public IVehicle factoryMethod(string type)
    {
        switch(type)
        {
            case "bike":
                new bike();
                break;

            case "car":
                new car();
                break;
        }
    }
}

main()

factory obj = new factory();
IVehicle vehicle = obj.factoryMethod("bike");

当我们通过在工厂方法中直接实例化具体类来创建对象时。

那么工厂设计模式是否违反了依赖注入?

c# dependency-injection factory-pattern
1个回答
0
投票

不,它没有。但是你的代码编写方式确实违反了。

相反,如果你简单地修改一下 Factory 类的代码,它将遵循 DI 原则。

像这样:

Class Factory{

 private IVehicle bikeInstance;
private IVehicle carInstance;

public Factory(IVehicle bike, IVehicle car)
{
    bikeInstance = bike;
    carInstance = car;
}

}

通过Factory类构造函数注入实例并通过faxctoryMethod()返回它们

© www.soinside.com 2019 - 2024. All rights reserved.