策略模式与依赖注入

Dar*_*der 13 c# design-patterns dependency-injection strategy-pattern

策略模式与依赖注入有何不同?

即以下是您可以使用策略模式执行的操作:

class Foo{
   private readonly ISortAlgo _sortAlgo;

  public Foo(ISortAlgo sortAlgo)
  {
     _sortAlgo = sortAlgo;
  }

  public void Sort()
  {
    _sortAlgo.sort();
  }

}
Run Code Online (Sandbox Code Playgroud)

使用DI你可以做同样的事情,基本上你可以有构造函数,setter,接口等注入.它会产生与战略模式相同的效果.我知道DI也有其他原则,例如松耦合,可测试性,布线等.

在实施方面,我没有看到太大的区别.

策略模式和DI有什么区别?

Aki*_*kim 15

首先,依赖注入不仅具有构造函数注入作为注入方法,还具有属性,方法注入环境上下文.

其次,stategy定义了行为,因此客户可以选择符合其需求的特殊行为.虽然依赖注入可与外部依赖的抽象.


Oli*_*bes 12

策略模式允许对象的行为(即,其算法)在运行时,其中作为选择依赖注入允许移除硬编码依赖性.

因此他们不是竞争对手.他们的实现可能类似,但他们的目标却不同.


use*_*301 6

策略允许您更改对象的行为.DI是一种设计模式,允许您依赖抽象.