0

目前,我们的 UML 类图中有如下结构:

Node --1------------*-- Data
 ^                        ^
 |                        |
SpecialNode--1----*--SpecialData

例如,SpecialNode 是 Node 类的特化,SpecialData 是 Data 类的特化。

这个想法是每个 SpecialNode 只有 SpecialData,没有“普通”数据。然而,有些人会争辩说,由于 SpecialNode 是一个节点,它可以与 Data 和 SpecialData 都有关系。

是否有任何可用的参考材料可以阐明 SpecialNode 是否只能具有 SpecialData?如果不是,我们如何(以干净的方式)强制执行此操作。

亲切的问候,乔斯

4

1 回答 1

0

Indeed, such modeling implies that SpecialNode inherits all the properties of Node, including Data. Otherwise it would contradict the Liskov Substitution Principle which is an important rule for good design. I would suggest not to define your Node and SpecialNode as "having" Data or SpecialData but rather have an interface to Data. For Node it will be associated with Data object and for SpecialNode it will be associated with SpecialData object.

于 2012-12-03T16:00:43.333 回答