《设计模式的艺术软件开发人员内功修炼之道》读书笔记一

很偶然的情况下看到了这本书,读起来发现这本书超级棒,说是醍醐灌顶也不为过。强烈建议收藏!虽然我看的设计模式方面的书少,但是这本书是我目前见过的写的最好的一本。
这是作者博客:
https://blog.csdn.net/lovelion?t=1

这里简单记录下每一章的知识回顾的问题,加深看完书后的记忆。
1.设计模式的定义:
是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。

2.设计模式的关键要素
模式名称、问题、解决方案和效果。
模式名称 :通过一两个词来为模式命名,以便我们更好地理解模式并方便开发人员之间的交流,绝大多数模式都是根据其功能或模式结构来命名的。
问题 :描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因
解决方案 :描述了一个设计模式的组成部分,以及这些组成部分之间的相互关系、各自的职责和协作方式,通常解决方案通过UML类图和核心代码进行描述。
效果 :描述了模式的优缺点以及在使用模式时应权衡的问题。

3.设计模式的分类:
根据用途,设计模式可分为创建型、结构型和行为型3种。其中,创建型主要用于描述如何创建对象,结构型模式主要用于描述如何实现类和对象的组合,行为型模式主要用于描述类或对象怎样交互以及怎样分配职责。在GoF 23种设计模式中,包含5种创建型设计模式、7种结构型设计模式和11种行为型设计模式。

创建型模式

模式名称 学习难度 使用频率
单例模式 ★☆☆☆☆ ★★★★☆
简单工厂模式 ★★☆☆☆ ★★★☆☆
工厂方法模式 ★★☆☆☆ ★★★★★
抽象工厂模式 ★★★★☆ ★★★★★
原型模式 ★★★☆☆ ★★★☆☆
建造者模式 ★★★★☆ ★★☆☆☆

结构型模式

模式名称 学习难度 使用频率
适配器模式 ★★☆☆☆ ★★★★☆
桥接模式 ★★★☆☆ ★★★☆☆
组合模式 ★★★☆☆ ★★★★☆
装饰模式 ★★★☆☆ ★★★☆☆
外观模式 ★☆☆☆☆ ★★★★★
享元模式 ★★★★☆ ★☆☆☆☆
代理模式 ★★★☆☆ ★★★★☆

行为型模式

模式名称 学习难度 使用频率
职责链模式 ★★★☆☆ ★★☆☆☆
命令模式 ★★★☆☆ ★★★★☆
解释器模式 ★★★★★ ★☆☆☆☆
迭代器模式 ★★★☆☆ ★★★★★
中介者模式 ★★★☆☆ ★★☆☆☆
备忘录模式 ★★☆☆☆ ★★☆☆☆
观察者模式 ★★★☆☆ ★★★★★
状态模式 ★★★☆☆ ★★★☆☆
策略模式 ★☆☆☆☆ ★★★★☆
模板方法模式 ★★☆☆☆ ★★★☆☆
访问者模式 ★★★★☆ ★☆☆☆☆

4.设计模式的用途:
⑴设计模式来源于众多专家的经验和智慧,他们是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案可以避免做一些重复性的工作,有助于提高设计和开发效率。
⑵设计模式提供了一套通用的设计词汇和一种通用的形式来方便开发人员之间进行沟通和交流,使得设计方案更加通俗易懂。交流通常很耗时,任何有助于提高交流效率的东西都可以为开发人员节省不少时间。无论使用哪种编程语言,做什么类型的项目,甚至对于一个国际化的开发团队,当面对同一个设计模式时,大家的理解并无歧义,因为设计模式时跨语言、跨平台、跨应用、跨国界的。
⑶大部分的设计模式都兼顾了系统的可重用性和可扩展性,这使得开发人员可以更好地重用一些已有的设计方案。此外,随着软件规模的日益增大,软件寿命的日益变长,系统的可维护性和可扩展性也越来越重要,许多设计模式将有助于提高系统的灵活性和可扩展性,在不修改或者少修改现有系统的基础上增加、删除或者替换功能模块,如果一旦设计模式都不懂,要做到这一点还是很困难的。
⑷合理使用设计模式并对设计模式的使用情况进行文档化,将有助于别人更快地理解系统。对于离职人员的项目,只要接手人员也懂设计模式,就能够很快理解该项目的设计思路和实现方案,使得后续工作顺利进行。
⑸最后一点对初学者很重要,学习设计模式将有助于初学者更加深入地理解面向对象思想。例如,如何将代码分散在几个不同的类中?为什么要有“接口”?何谓针对抽象编程?何时不应该使用继承?如何不修改源代码增加新功能?同时还能够更好地阅读和理解现有类库(如JDK)与其他系统中的源代码,早日脱离面对对象编程的“菜鸟期”。

你可能感兴趣的:(《设计模式的艺术软件开发人员内功修炼之道》读书笔记一)