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

新手上路,请多包涵

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

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

原文由 Sap_vr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 562
2 个回答

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

其实两者是可以一起使用的。例如,您可能有一个创建业务对象的工厂。它可能会根据持久性介质使用不同的策略。如果您的数据以 XML 的形式存储在本地,它将使用一种策略。如果数据在不同的数据库中是远程的,它会使用另一个。

原文由 tvanfosson 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

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

加里提出了一个很好的观点。如果您使用编码抽象而不是“具体化”的原则,那么很多模式开始看起来像是主题的变体。

原文由 jlembke 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题