4

这两个概念非常相似,很难分辨哪个是哪个。

请举例说明如何区分它们。

4

2 回答 2

4

所有 GRASP 概念都是相互关联的,因此您应该一起考虑它们:

  1. “信息专家”——问题是“哪个对象应该有需要的行为?” (请参阅 http://en.wikipedia.org/wiki/Domain-driven_design)喜欢这个问题的答案之一。
  2. “凝聚力” - 问题是“对象有多少不同的行为” http://en.wikipedia.org/wiki/GRASP_(object-oriented_design)

你不应该在没有编码实践的情况下学习这些概念,编写代码/进行重构 - 你会得到它。

于 2013-01-23T17:37:54.690 回答
0

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

于 2014-05-12T06:10:44.527 回答