设计模式(DP)整理

2018年03月16日

缘起

  • 其实一直都写在学设计模式,读研期间虽没选,但也修了设计模式,感觉那时才有点入了门,虽然之前也看了Gof的书,但一直云里雾里。

写在前面的话

  • 对于学好面向对象而言,UML的知识是重要的,因为设计模式基于面向对象,所以UML的学习是逃避不了的。可以开始时在纸上画,然后记住各种图标分别代表啥
  • 学习设计模式所需注意的问题,弄清以下问题:
    • 模式的名称,类型,目的,别名。
    • 什么情况下使用该模式?列举该模式的基本示例?
    • 模式的UML图?
    • 有哪些对象在模式中参与活动?列出使用的对象和类,并说明它们各自的角色。
    • 在模式中使用的类和对象之间是如何交互的?
    • 应用此模式能获得哪种效果?有什么副作用?
    • 如何实现该模式?
    • 与该模式相关的模式是什么?异同点是什么?
  • 设计模式的关键不在学习模式本身,而是鉴别应用场景和潜在风险,并将设计模式用之有道
  • 设计模式与软件框架的关系?
  • 用什么语言去实现设计模式?*个人更建议用java或者c#,那样才专注于学习模式本身,而不是陷入语言特性里。

内容

创造型

  • 注重于完成对象的实例化。相对于一般直接实例化对象,设计模式会根据实际情况有选择性地完成对象的实例化。
    • 对象创造型模式:完成对象创建,并将对象中部分内容放到其他对象中创建。
      • 抽象工厂模式
      • 生成器模式
      • 原型模式
      • 单例模式
    • 类创造型模式:完成类实例化,并将类中的部分对象放到子类中创建。
      • 工厂方法模式

结构型

行为型

参考与收获

参考

  • 《设计模式精解及面试攻略》chap1-3入门不错。