软件体系结构与设计模式
第一章 软件设计模式概述
目录:
1. 模式的诞生
模式起源于建筑领域,公认的建筑学领域模式之父,著名建筑学家克里斯托弗 · 亚历山大将模式描述为:
每个模式都描述了一个在我们的环境中不断出现的的问题,然后描述了该问题的解决方案的核心,通过这种方式,你可以无数次使用那些已有的解决方案,无需再重复相同的工作
将模式引入软件工程领域的是GoF(Gang of Four),由此诞生了软件模式。
GoF并不是一种具体的“技术”,它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来语言基础上跃进一步。更重要的是,GoF的设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
这其实在向一个极限挑战:软件需求变幻无穷,计划没有变化快,但是我们还是要寻找出不变的东西,并将它和变化的东西分离开来,这需要非常的智慧和经验。 而GoF的设计模式是在这方面开始探索的一块里程碑。
2. 什么是模式
-
一个围棋下的好的人知道, 好的形对于围棋非常重要,形就是棋子在棋盘上的几何形状的抽象化。
-
形就是模式(Pattern),也是人脑把握和认识外界的关键
-
我们在处理大量问题时,发现在很多不同的问题中重复出现的一种性质,它使得我们可以使用一种方法来描述问题实质并用本质上相同,但细节永不重复的方法去解决,这种性质就叫模式
-
模式是由特定环境、问题、解决方案组成的规则,其核心思想就是对设计的复用。
3. 软件模式
-
软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板
-
软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等。实际上,在软件生命周期的每一个阶段都存在着一些被认同的模式。
-
软件模式可以认为是对软件开发这一特定 “ 问题 ” 的 “ 解法 ” 的某种统一表示,即软件模式等于一定条件下出现的问题以及解法
软件模式 = 环境 + 问题 + 解决方案
-
软件模式的基础结构由4个部分构成:问题描述、前提条件(环境或约束条件)、解法 和 效果/优缺点/已知应用。