让我说我是一个班级:
std::shared_ptr
我想填充:
x如果y = a
z如果y = b
也就是说,带构造函数的Foo看起来像:
class Foo{
datatype1 x;
datatype2 y;
datatype3 z;
}
y被初始化以支持对象的未来决策,即取决于值y,我将读取x或z。
扩展Foo并执行此操作是否符合OOP的意义:
class Foo{
datatype1 x;
datatype2 y;
datatype3 z;
Foo(x, y){
// x and y are intialized
}
Foo(z, y){
// z and y are intialized
}
}
然后实例化Bar,如果满足使y等于a的条件,则满足Zar,如果满足使y等于b的条件。这意味着我将在Bar或Zar的对象上使用instanceof来执行我在阅读y之后所做的任何事情。
我觉得难看:Foo的对象要么具有x初始化,要么z取决于y。未初始化的字段将具有默认值(null或等效值)。它一直是一个跷跷板状态!
答案 0 :(得分:0)
这实际上取决于你想要建模和关系。正如Tagir所写,它还取决于客户端代码的外观。
Foo,Bar和Zar向我传达零意义,所以很难推荐任何东西。
您是否只使用Foo,Bar和Baz来保存数据,或者他们有其他方法而不是吸气剂?