记录《Head First 设计模式》
参考 Graphic Design Patterns网站 与 深入设计模式
目的是检查学习情况,同时方便以后复习。
一、 设计模式概念
1-1 简述
软件设计模式 Disign Pattern:又称设计模式,是一套被反复使用、多数人知晓的、经过分类目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易使人理解、保证代码可靠性、程序的重用性。
设计模式与方法或库不同。
- 方法或库:具有特定的代码。
- 设计模式:不是一段特定的代码,而是解决问题的一般性概念,可以根据模式来实现符合自己程序所需要的解决方案。
人们常常混淆模式与算法,因为两者的概念都是已知特定问题的典型解决方案。
- 算法:提供达成目标所需要的一系列步骤。
- 模式:可以预测最终结果与功能,但需要自己确认实现的步骤。同一模式下的不同程序实现的代码不一致。
1-2 模式包含内容
- 意图:简单描述问题和解决方案
- 动机:将进一步解释问题并说明模式会如何提供解决方案。
- 结构:展示模式的每个部分和它们之间的关系。
二、学习设计模式
1-1 学习设计模式的好处
-
设计模式是针对软件设计中常见问题的工具箱,其中工具时经过 实践验证的解决方案 。 即使你从未遇到过问题,但了解设计模式很有用,因为它能指导你如何解决对象的设计原则来解决各种问题。
-
设计模式定义了一种让你与团队成员能够 更高效沟通 的通用语言。
- 当使用模式和其他开发人员或者开发团队沟通时,你们之间的交流不只是模式名称,而是一整套模式背后所象征的质量、特性、约束。
- 当使用设计模式沟通时,其他开发人员更能容易理解你对设计的想法。。
- 使用模式谈论系统,可以让你保持在设计层次,不容易压低到对象与类的琐碎的事情上。
- 对于设计模式有深入了解的团队,彼此之间对于设计的看法不容易产生误解。
- 初级开发人员会向有经验的开发人员看齐。当高级开发人员使用设计模式,初级开发人员也会跟着学。把你的组织建立一个模式使用者的社区。
1-2 学习设计模式达到层次
- 了解并熟悉模式的结构图与时序图。
- 可以实现模式的代码,若实现不了代码,就不知如何使用模式。
- 在程序中灵活的使用模式。并不是简单的程序就使用模式,举例:输出 “HelloWorld” 都要运用模式,则是中了模式的毒。
三、设计模式分类
根据其 意图或目的 分类,可分为三种模式类型:
- 创建型模式:负责对象的创建。提供创建对象的机制,增加已有代码的灵活性和可复用性。
- 结构型模式:处理类与对象间的结合。介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效。
- 行为模式:类与对象交互中的职责分离。负责对象间的高效沟通和职责委派。
四、 UML
UML图关系:
五、设计模式要点
- 知道OO基础,并不足让你设计良好的OO系统(OO系统:Object Oriented 面向对象系统)
- 良好的OO系统,具有三个特性:可复用、可扩充、可维护。
- 模式被认为是历经验证的OO设计经验。
- 模式不是代码,而是针对设计问题通用解决方案。你可把它们应用到特定的应用中。
- 模式不是被发明的,是被发现的。
- 大多数的模式都允许系统局部改变独立于其他部分。
- 我们常把系统会改变的部分抽出来封装。