为什么策略模式被称为策略模式?

9
当然,你可以把它看作是一种策略,但这适用于几乎所有的设计模式。那么:为什么?
3个回答

9
由于一些组件实现了策略——“完成某些事情的方式”,策略模式的重点是让你能够在运行时选择一种做某事的方式,即“策略”。这个名字并不是指整个模式,而是指模式内执行动作的对象。

1
这似乎更像是一种“策略”,不是吗?“战略”不是意味着一个更大的“总体计划”范式吗? - jldupont
@jldupont:别怪我,这名字不是我起的! :-) - RichieHindle
1
是的,我接受了它,因为我猜你是对的,但这确实是一个很糟糕的名字 :-) - Peter
1
我当然不是在责怪任何人:我只是在暗示也许解释还不够充分。 - jldupont

8
策略模式的思想是“算法可以在运行时选择”。 (来自维基百科, 策略模式) 本质上,该模式是在运行时为解决特定问题选择正确的策略(或行为)。 因此,它的名称。

感觉这个定义比@RichieHindle提供的更合适。 - jldupont
1
仍然是一个不好的名称 - Imad
很遗憾,但你能想到更好的吗? - Yordan Lyutskanov

4
所有的设计模式都是应用程序设计的“策略”。然而,策略模式将复杂的逻辑、算法等封装起来,使代码更加简洁,并且可以根据不同的条件使用不同的策略。
例如,我为抵押品编写了一个复杂的利息计算方法,但是我并没有将计算方法放在Collateral类中,而是将其移动到了InterestCalculation(策略)类中。当他们告诉我计算方法需要不同的时候,由于InterestCalculation遵循IInterestCalculation接口,我可以随时切换和创建新的计算方法,而Collateral类不受影响...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接