我有类Data,它包含与常见主题相关的不同数据结构。
public class Data {
DataTypeA structureA;
DataTypeB structureB;
DataTypeC structureC;
}
public class DataTypeA extends ConcurrentHashMap<Integer, String> {
}
我想编写迭代结构A的代码,并根据每个条目中的值和从structureC获取的相关值执行一些操作。
从OO的角度来看,我有一个dillema,这个代码是最正确的。 选项:
在其他一些知道何时应该执行扫描以及如何处理数据的类中。如何在不暴露structureA实现方式的情况下完成?
在Data类中。它可以访问structureA和结构C,但我也不想将它们的实现暴露给Data类。
在DataTypeA类中。但是,它将不得不询问其他现有的数据,而这些数据并不是必须要注意的。
答案 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
}
}