在组合关系中存储对组件 class 的引用
Store a reference to component class in compositional relationship
我在看作文。 'store a reference to a component' 是什么意思?
对我来说,这意味着将有两个 class,其中一个 class 将从另一个 class 中实例化。这个对吗?您还能如何表示组合关系?
这个特定示例与聚合有何不同? (或者这需要一个对象存储对在其范围之外创建的实例化 classes 的引用..)
即(Ruby语法)
class A
def initialize
#stuff
end
end
class B
def initialize
@many_a_instances = []
end
def attach_an_A
@many_a_instances << A.new
end
end
在class B 中定义class A 会更好吗?
鉴于提问者的热情如雷...答案是这样的(基于与同事和朋友的交谈):
如何定义 classes 在某种程度上独立于不同 classes 的实例之间的关系(这取决于 classes 的实例化方式)。
如果实例定义了对实例的引用,则引用实例的生命周期取决于持有引用的对象。这定义了一个组成关系。
但是,如果您实例化了一个对象,然后将对该对象的引用传递给另一个 class,那将是一个聚合示例。因为两个实例化对象的生命周期是相互独立的,但是一个对象仍然引用另一个。
如此相同 class,但实例之间的关系不同。就定义 classes 的位置而言,这可能是特定于用例的。
任何更好的答案都将被标记为接受:)
我在看作文。 'store a reference to a component' 是什么意思?
对我来说,这意味着将有两个 class,其中一个 class 将从另一个 class 中实例化。这个对吗?您还能如何表示组合关系?
这个特定示例与聚合有何不同? (或者这需要一个对象存储对在其范围之外创建的实例化 classes 的引用..)
即(Ruby语法)
class A
def initialize
#stuff
end
end
class B
def initialize
@many_a_instances = []
end
def attach_an_A
@many_a_instances << A.new
end
end
在class B 中定义class A 会更好吗?
鉴于提问者的热情如雷...答案是这样的(基于与同事和朋友的交谈):
如何定义 classes 在某种程度上独立于不同 classes 的实例之间的关系(这取决于 classes 的实例化方式)。
如果实例定义了对实例的引用,则引用实例的生命周期取决于持有引用的对象。这定义了一个组成关系。
但是,如果您实例化了一个对象,然后将对该对象的引用传递给另一个 class,那将是一个聚合示例。因为两个实例化对象的生命周期是相互独立的,但是一个对象仍然引用另一个。
如此相同 class,但实例之间的关系不同。就定义 classes 的位置而言,这可能是特定于用例的。
任何更好的答案都将被标记为接受:)