工厂和战略模式有什么区别?

问题

任何人都可以解释工厂和战略模式之间的区别吗?

对我来说,除了额外的工厂类(在工厂模式中创建产品对象)之外,两者看起来都相同


#1 热门回答(161 赞)

工厂模式是一种创造模式。策略模式是一种操作模式。换句话说,工厂模式用于创建特定类型的对象。策略模式用于以特定方式执行操作(或操作集)。在经典示例中,工厂可能会创建不同类型的动物:狗,猫,虎,而策略模式将执行特定操作,例如,移动;使用Run,Walk或Lope策略。

实际上这两者可以一起使用。例如,你可能有一个创建业务对象的工厂。它可以使用基于持久性介质的不同策略。如果你的数据以XML格式存储在本地,那么它将使用一种策略。如果数据在另一个数据库中是远程的,那么它将使用另一个数据库。


#2 热门回答(23 赞)

策略模式允许你以多态方式更改类的行为。

工厂模式允许你封装对象创建。

加里非常重视。如果你使用编码原理而不是"凝固"那么很多模式开始看起来像主题的变化。


#3 热门回答(17 赞)

只是为了补充tvanfosson所说的,很多模式看起来和实现一样。也就是说,你可以创建一个接口,在你的代码中可能没有一个接口,然后创建一组该接口的实现。不同之处在于它们的用途以及它们的使用方式。