【发布时间】:2019-02-26 22:58:31
【问题描述】:
我最近参加了一个设计原则和模式的考试,考试中的一个问题是:“有时提高程序内聚可能会恶化耦合,举个例子。”
据我了解,凝聚力是指一个类/模块在解决它所创建的问题上的专注程度,或者更好的是,它在完成工作方面的表现如何。它做不该做的工作吗?然后将该部分移动到不同的类/模块。
耦合是许多类/模块之间的依赖级别。这意味着无论我们是否对不同的模块/类进行重大更改,一个好的类/模块都会起作用。
我用来向自己解释这一点的一种方式是这个例子: 调酒师的工作是制作咖啡和其他饮料。一个好的调酒师应该做好他的工作,那就是煮咖啡,这会增加他的凝聚力,但如果他开始拖地并为顾客服务,他就会脱离工作,从而失去凝聚力。一个好的调酒师也不应该受到其他工作人员的影响,这意味着他的耦合度很低。换句话说,如果清洁工一天早上不来上班,他的工作应该不受影响。
所以如果我的理解是正确的,这意味着增加内聚不应该对耦合产生负面影响,就像告诉调酒师更多地专注于咖啡不会让他更依赖清洁工一样。
我错过了什么吗?我对内聚/耦合的理解有缺陷吗?抱歉读了这么久!
【问题讨论】:
-
我怀疑考试是基于特定课程的,因此该问题具有特定于该课程的答案。
标签: design-patterns design-principles coupling cohesion