从书本的角度来看,你可能会说x设计模式适用于y场景,但我想在这里深入挖掘一下.所以这是我的疑问:
编辑:
我想补充一点,我通过"头部设计模式"阅读DP,虽然它是理解模式的最佳书籍之一.我认为我无法将Pizza示例转换为真实场景.
我认为这是关于DP的最有影响力的书之一,但我们仍然可以有一本书可以列举各种流行的商业场景,这些场景需要特定的模式以及该模式.我认为这种知识在很大程度上仍然隐含着.这样的书会是一个非常好的快速参考你不觉得:))
adi*_*ian 10
这取决于你如何编写代码.如果这是我在编码之前决定的一个大项目,那么在我开始编写代码之后,如果我注意到应该使用设计模式的地方,我会重构代码.
是的,如前所述.
在99.99%的案例中:工厂模式,单身人士(就像我在很多地方使用它的人一样,因为它很容易实现,实际上我倾向于在重构代码时删除它).然后:对象池(如果我有资源我想重用 - 我的一些项目是游戏,我需要一个良好的资源管理),策略和模板方法(因为它们非常适合解耦并很好地服务于编写代码的目的容易扩展).然后,当你有一个你想要使用的库时,可以使用适配器,而不依赖它(解耦).
如上所述,如果我还没有使用它们.它也以相反的方式起作用.如果我没有找到使用设计模式的原因,我会在编写代码时将其删除或跳过它(它一直发生在单例和工厂不时.有时我使用的工厂也是单例为我提供那些应该是单身人物的东西;不确定这是否是明智的做法,但它适用于我).
唯一的代码提示我可能会认为你对一个类的引用数量.您还可以使用PMD,jDepend和Architecture Rules来查找类包含太多依赖项的位置.我不确定这是一个编码提示.在设计阶段,不仅在您决定使用设计模式时,只需考虑其优点.我发现软件设计原则对于帮助您了解何时以及为何(不)使用设计模式非常重要,但对于使用设计模式的许多程序员来说,它们是未知的.
我不确定Micro DP是什么意思.我只是在找到使用它们的理由时才尝试使用DP,而且好处似乎比问题更大.我避免过度使用,因为它会导致您失去时间来实现和维护工厂模式而不是真正的软件.
我认为,至少对于那些新学习设计模式的人来说,有一种倾向,即过度应用一种模式; 当你有一把锤子时,一切都开始像钉子一样.更好的方法是考虑API的替代方案及其各自的优势和权衡,然后选择合适的方法.设计模式更多的是术语帮助,允许开发人员有效地传达他们正在做的事情,而不是提供如何编写代码的指南.也就是说,有些东西在代码中重复出现,并且更容易告诉你的同事你使用工厂而不是解释你有一些你传递的对象创造了其他对象......但仅仅因为工厂的概念确实存在并不意味着你应该尝试将你看到的所有东西都装进工厂.合理?