在我正在阅读的一本书(应用UML和模式)中,以下是一些事实来决定a对象是否是另一个B对象的创建者(GRASP创建者模式):
- B聚合对象A
- B包含对象A
- B记录A对象的实例
- B密切使用A的对象
我不清楚"聚合"、"包含"、"记录"one_answers"紧密使用"的区别。
有人能用一些例子来解释上述标准吗?
以下是Larman本人在书中给出的一些例子:
- 聚合:销售聚合SalesLineItems
- 包含:大富翁委员会包含方块
- 记录:注册记录销售额
- 密切使用:销售密切使用付款
你遗漏了一个标准,我举一个例子:
-
具有的初始化数据:从系统操作调用的用例"处理程序"通常具有初始化对象所需的参数。调用
enterItem(itemID : ItemID, quantity : integer)
系统操作时,ProcessSaleHandler具有SalesLineItem的初始化数据
是的,这些术语有一些歧义。
它们大多定义了现实世界中的关系。例如,当我们与某人交谈并说"某事包含某事"时,我们没有任何疑问。
但在这种情况下,最好有一些有正式定义的类比。
1) "骨料"。这很简单。这个术语对应于UML 中的"聚合"关系
2) "包含"。根据作者的书,我们有以下例子:"大富翁板包含方块"。事实上,这种关系对应于"组成"。因此,我们可以得出结论,这个关系图对应于UML中的"组合"关系。
3) "记录"。这是最"奇怪"的关系。但是,让我们再来看看他的书。我们可以看到,这种关系出现在"Register"类的上下文中。这是他注册处的具体工作,与一些常见的事情无关。但我们可以对此进行概括,得出Register类在"Payment"one_answers"Sale"之间使用"Association"的结论。因此,我们可以得出结论,"记录"对应于"UML"中的"关联"。
4) "密切使用"。这也很简单。这个术语对应于UML中用<lt;使用>>