相关疑难解决方法(0)

使用具有依赖注入的策略和工厂模式

我正在开展一个侧面项目,以更好地理解控制和依赖注入的反转以及不同的设计模式.

我想知道在工厂和战略模式中使用DI是否有最佳实践

我的挑战来自于一个策略(从工厂构建)需要为每个可能的构造函数和实现提供不同的参数.结果,我发现自己在服务入口点声明了所有可能的接口,并将它们传递给应用程序.因此,必须针对新的和各种策略类实现更改入口点.

为了便于说明,我在下面汇总了一个配对示例.我的这个项目的堆栈是.NET 4.5/C#和Unity for IoC/DI.

在此示例应用程序中,我添加了一个默认的Program类,负责接受虚构的订单,并根据订单属性和所选的送货提供商计算运费.UPS,DHL和Fedex有不同的计算方法,每个实现可能依赖或不依赖于其他服务(访问数据库,api等).

public class Order
{
    public string ShippingMethod { get; set; }
    public int OrderTotal { get; set; }
    public int OrderWeight { get; set; }
    public int OrderZipCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

用于计算运费的虚拟计划或服务

public class Program
{
    // register the interfaces with DI container in a separate config class (Unity in this case)
    private readonly IShippingStrategyFactory _shippingStrategyFactory;

    public Program(IShippingStrategyFactory shippingStrategyFactory)
    {
        _shippingStrategyFactory = shippingStrategyFactory;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns dependency-injection strategy-pattern factory-pattern

10
推荐指数
3
解决办法
1万
查看次数