迭代私有数据成员

时间:2018-01-24 10:23:51

标签: java oop

我有类Data,它包含与常见主题相关的不同数据结构。

public class Data {
      DataTypeA  structureA;
      DataTypeB  structureB;
      DataTypeC  structureC;
}

public class DataTypeA extends ConcurrentHashMap<Integer, String> {
}

我想编写迭代结构A的代码,并根据每个条目中的值和从structureC获取的相关值执行一些操作。

从OO的角度来看,我有一个dillema,这个代码是最正确的。 选项:

  1. 在其他一些知道何时应该执行扫描以及如何处理数据的类中。如何在不暴露structureA实现方式的情况下完成?

  2. 在Data类中。它可以访问structureA和结构C,但我也不想将它们的实现暴露给Data类。

  3. 在DataTypeA类中。但是,它将不得不询问其他现有的数据,而这些数据并不是必须要注意的。

2 个答案:

答案 0 :(得分:0)

我认为选项3 更好,您可以将必需的类作为方法参数,在这种情况下,您可以将 structureC 作为方法参数。

答案 1 :(得分:0)

从OOP的角度来看,数据不能转义对象,因此行为应该存在于每个对象中。每个对象应该包含它需要的所有数据。因此,如果DataTypeA无法独立完成工作并需要DataTypeC结构中的数据,则应将它们组合在单个对象中,以便完成工作,例如:

public class MyObject {
    private final DataTypeA dataA;
    private final DataTypeC dataC;

    public void doSomething() {
        // use dataA and dataC
    }
}