战略模式就像工厂?

时间:2013-10-27 14:56:54

标签: design-patterns

如果你看两个都处理多个对象,为什么我们有一个东西有两个模式?两者有什么不同?我在Gang of Four书中看了他们两个。

3 个答案:

答案 0 :(得分:0)

如果你已经学过GoF书,那么研究创造和操作模式的差异。另请参阅What is the difference between Factory and Strategy patterns?

答案 1 :(得分:0)

我很惊讶这个问题经常出现,因为工厂和战略完全属于两个不同的类别。工厂是创造性的;战略是可行的。我不需要进一步解释,因为Stack Overflow传奇@tvanfosson在这个问题上创造了这个优秀的post

还要记住两者可以同时共存。您可能有一个工厂可以生成可以注入课程的策略。

更有趣的问题是策略和Template Method之间的区别,两种类似的模式在一个重要方面有所不同。这涉及到继承与委派的整个讨论,这对于OO开发人员来说是一件非常好的事情。

答案 2 :(得分:0)

仅通过查看代码或分类,您无法理解差异。要正确掌握GoF模式,请查找它们的意图:

策略:“定义一系列算法,封装每个算法,并使它们可互换。策略允许算法独立于使用它的客户端。”

工厂方法:“定义用于创建对象的接口,但是让子类决定实例化哪个类.Pactor Method允许类将实例化推迟到子类。”

以下是对他们的解释:Difference between Factory Method and Strategy design patterns