(0)当一个班级Foo
包含类型为Predicate<Bar>
的字段或类似字段时,Foo
与Bar
的关系是什么?
class Foo {
Predicate<Bar> validator;
}
(1)如果一个类Foo
包含Bar
的通用容器(不一定是列表;可能是一个Bar
的一个框),那么Foo
&#39 ;与Bar
的关系?
class Foo {
SomethingThatHasA<Bar> barContainer;
}
(2)如果类Foo
具有Bar
类型的可空成员,Foo
是否仅依赖于Bar
,是否与class Foo {
Bar bar; // may be null
}
有关联? ?
Foo
(3)(这可能在C ++中比其他地方更有意义)如果一个类Bar
通常由一个Bar
对象组成(即没有Foo
就不能生活) ,但是允许有一个默认构造函数,它将所有字段作为一种空白平板状态归零/无效,直到稍后填充,Bar
仍然与class Foo {
private:
Bar* bar; // or possibly just a non-pointer Bar
public:
Foo() : bar(nullptr) {}
Foo(/* whatever */) : bar(/* something */) {}
};
具有组合关系?
let amount = _
.chain(selectedItemsArray)
.map(item => _.find(availableItems, {id: item.id})
//how can I determine that ALL items were found right here?
.filter('price_money')
...
答案 0 :(得分:1)
(0)和(1):这里的UML依赖是合适的:从Foo指向Bar的虚线箭头。
(2)至少一个关联。如果Foo和Bar的含义是这样的,那么Bar可以被认为是Foo的一部分,那么你可以使用聚合(开放钻石),例如在Car和Engine的情况下。此外,如果Foos提到的Bars实例的寿命不比它们的Foos长,那么你可以使用一个合成(填充钻石),即使不是每个Foo都有一个Bar,即使不是每个Bar都包含在Foo中
(3)是
答案 1 :(得分:0)
(0)none - Foo
只知道通过验证器验证Bar的实例。
(3)是的。 Foo
- 包含无效Bar
的s属于不死类别(因为...即没有条形码就无法生存)