有关设计模式速成课程的任何建议吗?

Jon*_*son 20 design-patterns

我将为我公司的开发人员提供设计模式的速成课程(最近遇到一些可怕的代码之后).

我想要提出的最重要的事情之一就是它们可以在长期和短期内节省时间(他们确实这样做了!) - 因为这里的开发人员受到相当长的时间压力.总而言之,我需要展示每天的好处 - 让他们早点回家的事情.

告诉他们这可能意味着更少的错误可能不会回家.我需要的东西会沉入其中.

我可能会做三到四节,每节一小时.你们有什么建议可以触摸/做什么?

Mit*_*eat 22

Head First Design Patterns将是一个很好的起点.它涵盖了主流设计模式.

重构模式也可能是有意义的.

如果你不能为每个开发商买一本书,买几个并散布它们.

  • +1首先设计模式 - 在我注意到它是用Java而不是C#之前我已经过了一半... (4认同)

SwD*_*n81 16

在我看来,任何教育课程的良好开放幻灯片是:

  1. 我们为什么在这里?(在哪里确定了这门课程的必要性?)
  2. 我期望学到什么?
  3. 谁应该参加这门课程?(目标学生,先决条件等是什么?)
  4. 我什么时候能应用我所学到的东西?
  5. 对你的期望(参与,家庭作业,考试,参加的最低班级等)

对于设计模式,我可以期待几种可视化工具或" 工作辅助工具 ".

我会遵循类似于可重用面向对象软件元素的结构书:

  1. UML - 类图概述
  2. OOP - 抽象,封装,多态,继承
  3. 凝聚力和耦合
  4. 什么是设计模式? - 模式名称,问题,解决方案,后果
  5. 为什么设计模式难以学习?
  6. 为何使用设计模式?
  7. 如何选择设计模式?
  8. 如何使用设计模式?
  9. 通过示例介绍各种GoF设计模式 - 在应用设计模式之前显示代码示例,以及像Vince Huston在其示例中所做的那样.
  10. 结论

如前所述,设计模式确实是创意,所以在教学时你必须传达这个想法.如果他们理解设计模式的问题,解决方案和后果,那么他们将比试图强制模式进入代码要好得多(这将成为一场噩梦).识别可以应用的位置和模式(如果有的话)是真正的目标.Huston示例非常适合于向类中提供代码示例,并查看它们是否可以识别模式以改进它.希望这可以帮助.

Head First Design Patterns也是一个很好的参考.


Nor*_*rtl 7

模式首先很难学习.我经常读那本GoF书.每年都有另一种模式沉入我的脑海.所以我唯一的建议是你最多选择两种模式并进入许多例子来解决它.

复合材料是每个人都知道的东西.在此,您可以解释,知道它具有可以使用和通信的名称可能很重要.模式中的重要之处在于,它可以让其他人轻松识别您的意图.而这些小名字非常有用.

我个人发现模板方法模式非常适合在基于OO的开发中处理.它与OOP的发生方式非常接近,它可能也有改进编码风格的好处.


dir*_*tly 7

大多数书籍解释模式的方法与我希望看到的完全相反.他们采取一种模式,描述前提条件,然后是什么,然后给你一个例子.我宁愿采取具体问题,并讨论替代方案.突出的那个,那就是'模式' - 只有这样才能引入它.

选择a)简单和b)最有可能在代码中使用的模式.单身人士易于学习(因为他们不涉及科目/对象).另一个有趣的是观察者模式.

  • +1模式代表了浓缩形式的多年经验.盲目地将它们从书中复制并不能给你带来这种体验.彻底讨论替代方案. (3认同)

And*_*erd 5

对于课程提供者而言,您处于一个独特的位置:您了解开发人员并了解他们正在使用的代码.

一种可能的方法是查看一些可怕的代码,并按照"我们怎样才能改进这一点?一如既往,有一种名为Observer的设计模式......"

这可能最终成为设计模式重构的混合体.但这可能是合适的,因为您正试图联系开发人员从事现有的代码库.