这两个概念非常相似,很难分辨哪个是哪个。
请举例说明您将如何区分它们。
所有GRASP概念都是相互关联的,因此您应该将它们一起考虑:
- "信息专家" - 问题是"哪个对象应该需要行为?(请参阅。http://en.wikipedia.org/wiki/Domain-driven_design)喜欢之一这个问题的答案。 "
- 凝聚力"——问题是"对象有多少种不同的行为"http://en.wikipedia.org/wiki/GRASP_(对象oriented_design)
你不应该在没有编码实践的情况下学习这些概念,编写代码/进行重构 - 你会得到它。
GRASP设计模式,正如这里非常正确所说(GRASP的信息专家和MVC的Modell是一样的吗?)是设计原则,支持你评估你的设计决策和实现。
GRASP中的"内聚力"是与"耦合"一起的评价设计模式。因此,您必须使用它们来分析您的设计,以确定它的内聚性和松散耦合程度,这直接增强了可重用性和可扩展性。
另一方面,"信息专家"可以帮助您确定应该赋予哪个类别特定责任。它告诉您将特定职责分配给具有最多信息的类。|
因此,在一个简单的购物车用例中,您将给出一个购物项目,以根据数量和单价计算ItemPrice(),以及购物车来计算TotalPrice()。
这成为一个关键因素,请注意,大多数 GOF 设计模式实际上都支持这个 GRASP 概念。
最重要的是。如果您在设计中应用了信息专家模式,它应该在评估设计方面为您提供高凝聚力。这就是信息专家和凝聚力齐头并进的方式,就像所有其他GRASP模式一样。
资源: http://www.cs.bgu.ac.il/~oosd051/uploads/stuff/ApplyingUMLandPatterns.pdf