当我有一个带有Map成员的类时,我不想绘制一个单独的类/接口对象来表示Map本身,但我更喜欢将地图视为本机类型,而不是而不是一个复杂的对象。
考虑以下示例
public class IndexManagerImpl implements IndexManager {
/* ... */
private static Map<Searcher, Integer> searcherCache;
}
我想强调一个IndexManagerImpl
保持(虽然间接)引用Searcher
个实例的事实。
如果表示也可以显示searcherCache
的类型参数,那将是很好的。
答案 0 :(得分:2)
不同意马丁...... MAP是我们在任何计算机毕业课程中学到的基本数据结构!它存在于大多数现代语言中,是分析师的重要设计资源。在某些情况下,Map可能会被绘制为关联,但是需要某种扩展(构造型),或者您可以定义模板类。我不喜欢模板方法 - 它隐藏了主要参与者的关联。 最后一个资源是AssociationClass,一个特殊的UML类,用于定义与属性的nxn关系,我认为适合你的问题,“整数”字段是与indexManager相关的搜索者的某种计数器。 还要记住,通过代码,您无法看到关系的另一面,而UML旨在显示双方,导航问题等。
答案 1 :(得分:0)
实际上,集合对象表示两个类之间的一对多关联。 因此,您的图表上应该有一个与Searcher类具有一对多关联的IndexManagerImpl类
答案 2 :(得分:-1)
地图不能被视为集合,因为它们具有与集合不同的属性。实际上,地图是具有特定(映射)关系的多个集合。在我看来,代表地图高度依赖于需求,并且可能有几个地图UML表示基于您的要求。 因此,在简单形式中,可以表示映射关系,与键集元素的一对多关联以及键集元素与值元素的一对一关联。 其中key元素和value元素是原始元素的包装,因为关联实际上不与原始元素相关。
希望这会有所帮助......