求有限类的类图示例:其任意对象图需含无限数量对象
有限类但对象图必为无限的类图示例
这里给你两个经典的实现方案,都只用到有限数量的类,但任何符合规则的对象图都必须包含无限个对象:
方案1:双向强制组合(2个类)
类结构
- Container:拥有一个强制组合关系(实心菱形)指向
Content——意味着每个Container实例必须包含一个Content实例作为其组成部分,且Content的生命周期完全由所属Container控制,不能独立存在。 - Content:拥有一个强制组合关系指向
Container——每个Content实例必须包含一个Container实例作为其组成部分。
为什么对象图必须无限?
尝试构建对象图的过程永远无法终止:
- 创建
Container实例c1,必须同时创建它的组成部分Content实例co1。 co1作为Content实例,必须同时创建它的组成部分Container实例c2。c2需要co2,co2需要c3……循环往复,只能生成无限数量的对象,没有任何方式能构建出有限的合法对象图。
方案2:自包含强制组合(1个类)
类结构
- NestedObject:拥有一个强制组合关系指向自身——每个
NestedObject实例必须包含另一个NestedObject实例作为其组成部分。
为什么对象图必须无限?
这个类的实例是无限嵌套的:每个NestedObject里都必须包含一个新的NestedObject,不存在“不包含子实例”的合法对象,因此任何对象图都只能是无限层的嵌套结构,对象数量必然无限。
内容的提问来源于stack exchange,提问作者PDP
相关产品推荐
相关产品推荐

