[英]Strategy Pattern vs Dependency Injection
策略模式与依赖注入有何不同?
即以下是您可以使用策略模式执行的操作:
class Foo{
private readonly ISortAlgo _sortAlgo;
public Foo(ISortAlgo sortAlgo)
{
_sortAlgo = sortAlgo;
}
public void Sort()
{
_sortAlgo.sort();
}
}
使用DI你可以做同样的事情,基本上你可以有构造函数,setter,接口等注入。 它会产生与战略模式相同的效果。 我知道DI也有其他原则,例如松耦合,可测试性,布线等。
在实施方面,我没有看到太大的区别。
策略模式和DI有什么区别?
首先, 依赖注入不仅具有构造函数注入作为注入方法,还具有属性 , 方法注入和环境上下文 。
其次, stategy定义了行为 ,因此客户可以选择符合其需求的特殊行为 。 依赖注入与外部依赖的抽象一起工作。
策略允许您更改对象的行为。 DI是一种设计模式,允许您依赖抽象。
依赖注入是一种帮助您拆分构造形式逻辑的模式,这对于测试和系统可扩展性非常有用。 它也可以用在其他图案适合的位置,例如Singleton。
策略模式解决了不同的问题。 它允许运行时选择算法 - 在OOP中通过多态。
当然,他们可以一起工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.