我刚刚浏览了Stackoverflow上的设计模式问题,每个人都提到了GoF- Design Pattern
本书和Head First Design Patterns
本书来学习它们。
我的问题是我们如何才能了解where
和when
我们是否可以应用特定Design Pattern
。
是否有任何书籍或在线资源提供了这些知识或我们在做出where
和when
决定时需要遵循的步骤,我们应该使用特定的Design Patterns
?
答案 0 :(得分:5)
重构模式,而不是代码模式是一般建议。
答案 1 :(得分:4)
经验是您最好的指导。但总的来说:
不要仅仅为了应用它而应用设计模式;确保问题确实是您认为的问题,并且您在应用设计模式所需的深度上理解它。
解决问题的代码,不应用设计模式。
虽然从长远来看它们很有用,但对于初学者来说,阅读这些书籍通常会非常危险,因为它们从一个空的工具箱变成现在只有一把巨大的锤子 - 当你拥有的只是一把锤子,一切看起来像钉子。
答案 2 :(得分:1)
我发现FluffyCat.com是设计模式示例的一个非常有用的来源。它提供了所有GoF模式的Java和PHP实现示例,以及每种模式应如何工作的描述。
答案 3 :(得分:1)
答案 4 :(得分:1)
就像知道第一次使用合适的工具一样钓鱼......如果你以前从未体验过,那就太难了。考虑到一些时间和讲座,它本身就会出现。
如果您通过实施不适合该工作的设计模式而犯了错误,那么您将很难做到这一点。但是你将学习其中的2个(你应该学习的那个,以及你所学的那个);)
麦克
答案 5 :(得分:0)
Refactoring: Improving the design of existing code是一本非常好的书。它显示了现有的传统代码,然后说明了为什么以及如何重构它。许多关于如何识别应该重构的代码以及如何采取小的增量步骤来执行此操作的示例。
答案 6 :(得分:0)
根据我的经验,只要您遇到可能适用设计模式的特定问题,充分了解设计模式就足以打开您的脑海中的灯光。正如约翰所说,凭借经验,你将学会运用正确的方法。
通常情况下,有多个模式可以正常工作。但是你不应该太努力地使模式适合特定的解决方案。一段时间后,它应该只是“显而易见”。
有时您可以组合模式或稍微调整它们以适应特定问题。并且看到一种新的模式并且认为“我一直都在这样做,这种情况并不常见。”设计模式本身并不是发明的,它们被识别和命名。这并不是说它们是构建软件的严格方法。
答案 7 :(得分:0)
我会推荐sourcemaking.com。它提供了有关如何以及何时使用GoF设计模式的一般性讨论。以及如何将它们结合起来以获得最佳效果。
Joshua Kerievsky的书Refactoring to patterns也可能是一本宝贵的资源。