Head First Design Patterns

如何定义模式

模式是某种情景下,针对某问题的某种解决方案。

  • 情景
    • 应用某个模式的情况,应该是会不断出现的情况
  • 问题
    • 想在某个情景下达到的目标,但也可以是某情景下的约束
  • 解决方案
    • 一个通用的设计,用来解决约束、达到目标

帮助记忆上述概念的方法

如果你发现自己处于某个情境下,面对着所欲达到的目标被一群约束影响着的问题,然而,你能够应用某个设计,克服这些约束并达到该目标,将你领向某个解决方案。

比如

  • 问题:我要如何准时上班
  • 情景:我的钥匙锁在车里了 | 搭地铁肯定要迟早了
  • 解决方案:打破窗户、进入车内、启动引擎,开车上班 | 打开手机、呼叫滴滴、上出租车,打车上班。

更多定义的细节:

  • 意图
  • 动机
  • 对比
  • 适用性
  • 举一反三

如何更加详细去定义和学习一个设计模式

  • 名称:用于学习与分享时共享词汇,概括性描述一个设计模式的作用
  • 分类:用于归纳设计模式的用途
  • 动机:给出了问题以及如何解决这个问题的具体场景
  • 结构:提供了图示,显示出参与此模式的类之间的关系
  • 参与者:描述在此设计中所涉及到的类和对象在模式中的责任和角色
  • 结果:描述采用此模式之后产生的效果:好与不好
  • 协作:告诉我们参与者如何在此模式中合作
  • 实现:提供了你在实现该模式时需要使用的技巧,以及应该小心面对的问题
  • 代码:提供实现的代码,对如何实现有所帮助
  • 已知应用:用来描述已经在真实系统中发现的模式例子
  • 相关模式:描述了此模式和其他模式之间的关系