目前我们的UML类图中有如下结构:
Node --1------------*-- Data
^ ^
| |
SpecialNode--1----*--SpecialData
E.g。 SpecialNode是Node类的特化,而SpecialData是类Data的专门化。
这个想法是每个SpecialNode只有SpecialData,没有'普通'数据。 但是,有些人认为,由于SpecialNode是一个Node,它可以与Data和SpecialData建立关系。
是否有任何可用的参考资料可以澄清SpecialNode是否只能包含SpecialData?如果没有,我们怎么能这样做(以干净的方式)。
亲切的问候, 朱斯
答案 0 :(得分:0)
实际上,这种建模意味着SpecialNode
继承了Node
的所有属性,包括Data
。否则它会与Liskov Substitution Principle相矛盾,这是良好设计的重要规则。我建议您不要将Node
和SpecialNode
定义为“拥有”Data
或SpecialData
,而是拥有 {{1}的界面}。对于Data
,它将与Node
对象相关联,对于Data
,它将与SpecialNode
对象相关联。