确定导航性时要考虑的范围?

问题描述 投票:0回答:2

在决定ClassA是否可以“导航到”ClassB时,您是否只考虑ClassA的字段/属性,还是考虑ClassA的任何方法是否实际“导航到”ClassB的任何对象?或者您是否考虑ClassA的某些方法是否仅暂时保留对ClassB的任何对象的引用?

换句话说:假设我有一个ClassA,它没有ClassB类型的任何字段。但是,我有一个方法ClassA.method1(ClassB b)。当调用该方法时,它通过调用b.method2()从b中提取信息,相应地执行某些操作,然后超出范围,但是对b的引用不会永久存储在ClassA中。我是否表示ClassA可以导航到ClassB?

更简单地说,让我们说ClassA.method1(ClassB b)只是将b传递给其他对象而从不调用b上的任何方法。我是否指出ClassA只能导航到ClassB,因为它暂时保存对ClassB的引用?

或者,如果ClassA具有Class B类型的字段,我是否指示ClassA可以导航到B类?

uml class-diagram
2个回答
1
投票

导航性过去意味着特定类拥有一个属性,该类可以通过该属性访问该属性的类型。完全停止。它与操作或实现方法无关。

现在,导航性意味着很少,并且一个明确的“球”符号告诉你一个类,而不是一个关联,拥有一个属性。改变的原因是,当一个协会拥有一个财产时,没有什么可以防止一个类导航。 (例如,考虑在代表关联的关系表中查询RDBMS。)我根本不喜欢球符号,但它就是这样。


0
投票

可导航性是您不需要的。它只是意味着“将有一些属性访问其他类,但在当前设计阶段,我不知道如何调用它”。然而,这些隐含属性最为明显。根据我的经验,只有极少数情况下您实际应该使用导航来清理某些方面。在大多数情况下,我只使用简单的无向联想。在稍后的设计阶段,我添加一个角色名称并使用点表示法使其成为拥有的属性。

对于操作使用另一个类作为参数或结果以及您没有显式属性的情况,您只需使用依赖关系。

© www.soinside.com 2019 - 2024. All rights reserved.