你如何应用设计模式?

Sid*_*war 21 design-patterns

从书本的角度来看,你可能会说x设计模式适用于y场景,但我想在这里深入挖掘一下.所以这是我的疑问:

  1. 你什么时候开始决定使用设计模式?在编码之前,你们所有人都决定设计模式吗?
  2. 在完成编码(小型重构)后,是否有任何DP应用?在维护代码的同时应用DP吗?
  3. 在设计过程中主要应用的设计模式是什么?
  4. 在调整/重构代码时应用哪些DP?
  5. 是否有任何提示你应该应用DP(如太多ifs,双重调度,多线程)的代码中的提示(技术而非功能性的东西)?如果是这样,你能说出DP和他们的抓点吗?
  6. 你是否使用任何让你对你所编写的代码感觉良好的Micro-DP(即使其他人讨厌你:p)?

编辑:
我想补充一点,我通过"头部设计模式"阅读DP,虽然它是理解模式的最佳书籍之一.我认为我无法将Pizza示例转换为真实场景.

我认为这是关于DP的最有影响力的书之一,但我们仍然可以有一本书可以列举各种流行的商业场景,这些场景需要特定的模式以及该模式.我认为这种知识在很大程度上仍然隐含着.这样的书会是一个非常好的快速参考你不觉得:))

adi*_*ian 10

  1. 这取决于你如何编写代码.如果这是我在编码之前决定的一个大项目,那么在我开始编写代码之后,如果我注意到应该使用设计模式的地方,我会重构代码.

  2. 是的,如前所述.

  3. 在99.99%的案例中:工厂模式,单身人士(就像我在很多地方使用它的人一样,因为它很容易实现,实际上我倾向于在重构代码时删除它).然后:对象池(如果我有资源我想重用 - 我的一些项目是游戏,我需要一个良好的资源管理),策略和模板方法(因为它们非常适合解耦并很好地服务于编写代码的目的容易扩展).然后,当你有一个你想要使用的库时,可以使用适配器,而不依赖它(解耦).

  4. 如上所述,如果我还没有使用它们.它也以相反的方式起作用.如果我没有找到使用设计模式的原因,我会在编写代码时将其删除或跳过它(它一直发生在单例和工厂不时.有时我使用的工厂也是单例为我提供那些应该是单身人物的东西;不确定这是否是明智的做法,但它适用于我).

  5. 唯一的代码提示我可能会认为你对一个类的引用数量.您还可以使用PMD,jDependArchitecture Rules查找类包含太多依赖项的位置.我不确定这是一个编码提示.在设计阶段,不仅在您决定使用设计模式时,只需考虑其优点.我发现软件设计原则对于帮助您了解何时以及为何(不)使用设计模式非常重要,但对于使用设计模式的许多程序员来说,它们是未知的.

  6. 我不确定Micro DP是什么意思.我只是在找到使用它们的理由时才尝试使用DP,而且好处似乎比问题更大.我避免过度使用,因为它会导致您失去时间来实现和维护工厂模式而不是真正的软件.


Pét*_*rök 9

两本关于如何以及何时(不)使用设计模式的好书是:


Mic*_*yan 6

我认为,至少对于那些新学习设计模式的人来说,有一种倾向,即过度应用一种模式; 当你有一把锤子时,一切都开始像钉子一样.更好的方法是考虑API的替代方案及其各自的优势和权衡,然后选择合适的方法.设计模式更多的是术语帮助,允许开发人员有效地传达他们正在做的事情,而不是提供如何编写代码的指南.也就是说,有些东西在代码中重复出现,并且更容易告诉你的同事你使用工厂而不是解释你有一些你传递的对象创造了其他对象......但仅仅因为工厂的概念确实存在并不意味着你应该尝试将你看到的所有东西都装进工厂.合理?