这两个概念非常相似,很难分辨哪个是哪个。
请举例说明如何区分它们。
所有 GRASP 概念都是相互关联的,因此您应该一起考虑它们:
你不应该在没有编码实践的情况下学习这些概念,编写代码/进行重构 - 你会得到它。
GRASP 设计模式,正如这里所说的非常正确(来自 GRASP 的 Information Expert 和来自 MVC 的 Modell 是否相同?)是设计原则,支持您评估您的设计决策和实现。
GRASP 中的“内聚”是一种与“耦合”并列的评估设计模式。因此,您必须使用它们来分析您的设计,以确定它的内聚性和松散耦合性,这直接增强了可重用性和可扩展性。
另一方面,“信息专家”可以帮助您确定应该赋予哪个班级特定的责任。它告诉您将某种责任分配给拥有最多信息的类。|
因此,在一个简单的购物车用例中,您可以根据数量和单价提供 ShoppingItem 来计算项目价格(),并提供 ShoppingCart 来计算总价格()。
这成为一个关键因素,请注意大多数 GOF 设计模式实际上都支持这个 GRASP 概念。
最重要的是。如果您在设计中应用了信息专家模式,它应该在评估您的设计方面为您提供高度的凝聚力。这就是 Information Expert 和 Cohesion 将如何携手并进,就像所有其他 GRASP 模式一样。
资源:http ://www.cs.bgu.ac.il/~oosd051/uploads/stuff/ApplyingUMLandPatterns.pdf