新的儿童班或同一条件的有条件读物?

时间:2015-05-28 18:21:51

标签: java oop refactoring

让我说我是一个班级:

std::shared_ptr

我想填充:

  1. x如果y = a

  2. z如果y = b

  3. 也就是说,带构造函数的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或等效值)。它一直是一个跷跷板状态!

1 个答案:

答案 0 :(得分:0)

这实际上取决于你想要建模和关系。正如Tagir所写,它还取决于客户端代码的外观。

Foo,Bar和Zar向我传达零意义,所以很难推荐任何东西。

您是否只使用Foo,Bar和Baz来保存数据,或者他们有其他方法而不是吸气剂?