Design patterns 如何应用设计模式?
从书呆子的角度来看,您可能会说x设计模式适用于y场景,但我想在这里更深入一点。以下是我的疑问:Design patterns 如何应用设计模式?,design-patterns,Design Patterns,从书呆子的角度来看,您可能会说x设计模式适用于y场景,但我想在这里更深入一点。以下是我的疑问: 您何时第一次决定使用设计模式?你们所有人在编码之前都决定了设计模式吗 在完成编码(小重构)之后,您是否应用了任何DPs?您是否在维护代码时应用DP 在设计过程中主要应用的设计模式是什么 调整/重构代码时应用的DPs是什么 代码中是否有任何提示(技术而非功能性的东西)建议您应用DP(比如太多的ifs、双分派、多线程)?如果是的话,你能说出DPs和他们的要点吗 你是否使用过任何能让你对自己编写的代码感觉良
我想补充一点,我通过“头先设计模式”阅读DPs,尽管这是理解该模式的最佳书籍之一。我认为我无法将比萨饼的例子转换为现实世界的场景
我认为这是关于DP的最有影响力的书籍之一,但我们仍然可以有一本书列举各种流行的商业场景,这些场景需要一种特定的模式。我认为,这种知识在很大程度上仍然是隐含的。这样一本书将是一个非常好的快速参考书,你不认为吗:)我认为有一种趋势,至少对于那些新学习设计模式的人来说,过度应用模式;当你有一把锤子时,一切看起来都像钉子。一个更好的方法是考虑API的替代方案以及它们各自的优点和权衡,然后选择合适的。设计模式更多的是一种术语帮助,它允许开发人员有效地传递他们正在做的事情,而不是提供应该如何编写代码的指南。也就是说,有些事情会在代码中重复出现,告诉同事您使用了工厂比解释您传递的某个对象创建了其他对象更容易。。。。但仅仅因为工厂的概念存在并不意味着你应该把你看到的一切都变成工厂。有意义吗?在我看来,没有任何规则或常见情况。设计模式是在适当的时候使用的,有时是在设计时,有时是在编码时,有时是在重构时
大多数时候,我不会一对一地“应用设计模式”。他们需要适应。设计模式就像一个经验目录。您只需了解一些常见或典型的模式,并将它们更改为您需要的解决方案。(注意:它们是模式,而不是解决方案。)根据我的经验,模式何时应用取决于前期设计的方法和水平。通常在敏捷过程中,我会看到随着代码意图的发展,模式很快出现,然后进行相应的重构 冒着声明显而易见的单元测试的风险,可以减轻很多风险,但越早进行就越好。我从未做过支持实现新模式的主要代码重构,因为所涉及的工作很少显示出显著的好处。除非该项目即将进入一个新的发展阶段
包含在一个或两个方法中的小重构在项目的整个生命周期中是相当常见的,但这些重构都是以没有“代码完整”这类东西为幌子的:设计模式描述了在给定上下文中针对反复出现的问题的通用可重用解决方案。当您发现一个模式可以解决的身份设计问题时,您应用了一个模式。这可能发生在初始设计、编码、维护等过程中。IMO称,没有绝对配方 另见
- (由GoF的John Vlissides撰写)
- (乔什·克里耶夫斯基)