1、1.设计原则内聚&耦合前面通过实例讲解了一个一环扣一环的面向对象的开发流程:用例模型->领域模型->设计模型(类模型+动态模型),解答了面向对象如何做的问题。接下来我们就要讲“如何做好面向对象设计”的技巧了【内聚】参考维基百科的解释,内聚的含义如下:cohesion refers to the degree to which the elements of a module belong together.翻译一下即:内聚指一个模块内部元素彼此结合的紧密程度。 看起来很好理解,但深入思考一下,其实没有那么简单。首先:“模块”如何理解
6、否互相吸引和帮助;判断面向对象模块凝聚力时,我们同样关注元素间的结合关系; 虽然判断内聚性的时候我们会考虑元素的结合情况,但其实是否专注模块的职责,才是内聚性的充要条件。当模块的元素全部都专注于模块的职责的时候,即使元素间的结合不是很紧密,也是符合内聚性的要求的,这也是CRUD设计符合内聚性的原因。 所以,判断一个模块(函数、类、包、子系统)“内聚性”的高低,最重要的是关注模块的元素是否都忠于模块的职责,简单来说就是“不要挂羊头卖狗肉”。【耦合】参考维基百科,耦合的定义如下:coupling or dependency is the
7、 degree to which each program module relies on each one of the other modules。简单翻译一下:耦合(或者称依赖)是程序模块相互之间的依赖程度。 从定义来看,耦合和内聚是相反的:内聚关注模块内部的元素结合程度,耦合关注模块之间的依赖程度。 理解耦合的关键有两点:什么是模块,什么是依赖。 什么是模块?模块和内聚里面提到的模块一样,耦合中的模块其实也是可大可小。常见的模块有:函数、类、包、子模块、子系统等 什么是依赖?依赖这个词很好理解,通俗的讲就是某个模块用到了另