耦合和聚合(或者内聚)
我敢保证这两个词,你会经常听到。同时我也敢说,你问一下你所有的同事,不会有几个人可以清楚地定义这两个词。
以下定义来自《UML和模式应用 面向对象分析和设计导论》中译版,姚淑珍译。
英文版《Applying UML and Patterns An introduction to Object-Oriented Analysis and Design》By Craig Larman。
耦合度(Coupling)是一个类与其他类关联、知道其他类的信息或者依赖其他类的强弱程度的度量。
在面向对象的设计领域中,聚合度或内聚度(Cohesion)(更具体地说,是功能聚合度)是对一个类中的各个职责之间相关程度和集中程度的度量。
我的解释:
耦合度是指一个类对外的关联程度,如果关联了很多的类,耦合度就高,反之耦合度就低。
聚合度是指一个类内部承担职责之间的相关程度,职责比较接近,聚合度就高;反之聚合度低。比如:高聚合度:职责都是对SQL Server的访问;低聚合度:有写SQL Server,有写文件的。
我的白话:
有七个人,之间关系简单,耦合度低,关系复杂,耦合度高;
每个人干的事专一,聚合度高;自己都搞不清自己在干什么,聚合度低。
我们目标是:低耦合,高聚合。