读设计模式精解

读<<设计模式精解>>第一章笔记。

功能分解:
分析即是分解,分析的过程既是分解的过程。最常用的方式就是功能分解,功能分解仅是分析的一种方法。针对需求,功能分解难以为我们提供面向未来应对变化的策略。而需求中不变的就是变化(需求变化的来源大抵有三种:1。新的功能需求;2。开发者对于问题领域的理解发生了变化,通过开发来提高问题领域的自动化程度;3。开发环境的变迁。),需求中的变化总是对于已经分解好的功能结构产生致命的冲击。仅仅将注意力集中在功能上是不够的,必须对数据结构和过程进行抽象、封装等,促使已有的实现能灵活应对需求的变化。
模块化:
通常我们还会选择模块化来进一步进行设计,其精髓就是高内聚低耦合。模块化能让我们写出更容易理解、更容易维护的代码。但是模块没有完全提出代码实现的抽象和封装,没有进一步提供粒度较小的抽象、封装和复用,可能一个过程或者数据结构的变动,确对一些地方的代码造成了意料之外的影响。
结论:
仅仅能实现当前需求的代码远远是不够的,而且仅仅使用功能分解然后实现之的分析设计思路也是糟糕的,因为需求总是在变化。我们必须从这里走得更远,作者就引入乐面对对象范式。
OOP在由抽象、封装、模块化、分层组成的对象模型之概念框架下,在语言级粒度上提供了封装、继承、多态的支持;这是人类复用技术的进步,但是使用了oop并不代表就能完全运用了对象模型的核心思想。(TDD是当前应对代码变化的最好的开发方式。需求变化的最大承受者就是代码,富于变化和善于应对变化的代码才能存活下来。)