设计模式是个好东西,为什么好呢?目前不清楚,一直想学.没时间.最近买了<设计模式精解>.开始读书.
本书的第一章是介绍面向对象范式.通过和另外一种常见的范式-标准结构化程序设计进行对比,来让读者更好的理解面向对象范式.
我们先来看看标准结构化程序设计范式是如何来解决问题的,也就是如何编程的.如果我们拿到一个任务,为了完成任务,我们很自然的把任务分解,分解到每个部分都很容易完成,然后按步骤完成各个部分,总的任务也就完成了.这本书举了个编程的例子.其实我们处理很多事情都是分解来做的,比如做饭,洗衣服等等.
这种自然而然的解决问题的办法简单实用,但是这个方法的缺点是什么呢?答案是,他不能处理变化. 对于软件开发,一个项目中可以确定的是,需求总是会变化.我们不能逃避变化.而是要找到一种办法来适应变化.许多软件bug来自代码的变化.因此我们需要不断的改进开发过程,以便更好的应付需求的变化.
标准结构化程序设计范式,如何来处理变化呢? 我们可以使用模块化来包容变化.把可能变化的部分封装成一个模块,然后当产生变化的时候,就更改这个模块就可以了.模块化可以让代码清晰,容易理解和维护,但是没有办法应付所有可能出现的变化.另外,模块化还有两个问题,低内聚,高耦合.
内聚度-程序中的操作之间联系紧密的程度.也就是子程序内部成分之间相互联系的程度.
(广告 芙蓉姐姐 芙蓉一出,谁与争锋,千秋万载,一统江湖!)
耦合度-两个子程序之间联系的强度.
耦合度和内聚度是成反比的.强内聚的,也就是内部完整性越高的子程序.和其他子程序之间的联系越小,直接,可见和灵活(松耦合).而这个是我们的目标.
还有一个问题是函数的副作用,改变函数引起一系列问题.而这个的原因是我们设计函数的时候只是关注功能.这个导致一处改动会引起雪球效应.