当我仔细观察策略和工厂设计模式时,它几乎看起来很相似。 我们可以用这些模式中的任何一种来实现解决方案。 然后我想知道什么时候该用什么。策略和工厂设计模式有什么区别?
2
A
回答
2
Abstract Factory
设计模式用于解决如下问题:
- 系统如何独立于其对象的创建方式?
- 如何独立更改对象的创建方式
(无需更改现有类)?
该模式的关键思想是抽象对象创建过程。
客户端(需要创建对象)是指抽象 (接口)并独立于实现 (如何创建对象/实例化哪些具体类)。
何时不使用抽象工厂: 不改变的对象创建 (当实例化的具体类从不改变时)。
的Strategy
设计模式是用来解决问题等:
- 对象支撑如何使用不同的算法
使得其中要使用的算法可以被选择并且动态地改变?
- 算法实现的方式如何独立更改
(无需更改现有类)?
例如,计算订单处理系统中的价格。
要以不同方式计算价格,应该有可能支持 支持不同的定价算法 ,以便可以在运行时动态选择和更改要使用的算法。
这种模式的主要思想是从其上下文(并将其封装在单独的对象中)中分离算法 (即更改)。
如需进一步讨论,请参阅学习 面向对象设计&在http://w3sdesign.com编程 GoF的设计模式记忆。
+0
谢谢你的回答澄清! – OPV 2017-09-25 14:34:39
相关问题
- 1. 策略设计模式与抽象工厂模式有什么区别?
- 2. 工厂和管道设计模式有什么区别?
- 3. 工厂方法和抽象工厂设计模式有什么区别?
- 4. 服务定位器和工厂设计模式有什么区别?
- 5. 访客和策略模式有什么区别?
- 6. 设计模式和架构模式有什么区别?
- 7. 工厂方法设计模式中的工厂设计模式与目标c中的抽象工厂有什么区别?
- 8. 模式策略,访问者和模板方法有什么区别?
- 9. 策略设计模式
- 10. Multipe策略设计模式
- 11. DI与工厂模式有什么区别?
- 12. 模拟,存根和工厂女孩有什么区别?
- 13. 界面和设计模式有什么区别?
- 14. 设计模式和库之间有什么区别?
- 15. Spring singleton和Java singeleton(设计模式)有什么区别?
- 16. Facade和Gateway设计模式有什么区别?
- 17. 设计和建筑模式有什么区别
- 18. 新的设计模式/设计策略
- 19. 模板方法和策略设计模式之间有什么相似之处
- 20. 设计模式 - 策略模式
- 21. 策略模式与工厂类别单元测试
- 22. Passportjs中本地基本策略和摘要策略之间有什么区别
- 23. Dispatcher视图和服务与工作设计模式有什么区别?
- 24. 工厂模式设计
- 25. iOS工厂设计模式
- 26. 价值迭代和策略迭代有什么区别?
- 27. 遗传算法和进化策略有什么区别?
- 28. 在hapi.js认证方案和策略之间有什么区别?
- 29. 使用工厂和战略设计模式
- 30. PHP设计模式工厂,仓库和...?
[提问]的复制(http://stackoverflow.com/questions/616796/what-is-the-difference-between-factory-and-strategy-patterns) – ialekseev 2015-02-06 11:23:52
感谢您的帮助 – 2015-02-06 11:26:16