【发布时间】:2010-12-12 00:37:04
【问题描述】:
在 Java 中的不同类之间共享数据的最佳方式是什么?我有一堆变量,不同的类以不同的方式在不同的文件中使用它们。 让我尝试说明我的问题的简化版本:
这是我之前的代码:
public class Top_Level_Class(){
int x, y;
// gets user input which changes x, y;
public void main(){
int p, q, r, s;
// compute p, q, r, s
doA(p,q,r);
doB(q,r,s);
}
public void doA(int p, int q, int r){
// do something that requires x,y and p, q, r
}
public void doB(int q, int r, int s){
// does something else that requires x, y and q, r, s
}
}
现在看起来像这样:
public class Top_Level_Class(){
int x, y;
SomeClass1a a = new SomeClass1a();
SomeClass1a b = new SomeClass1b();
// gets user input which changes x, y;
public void main(){
int p, q, r, s;
// compute p, q, r, s
a.doA(p,q,r);
b.doB(q,r,s);
}
public class SomeClass1a() { // in its own separate file
public void doA(int p, int q, int r){
// do something that requires x,y and p, q, r
}
}
public class SomeClass1b() { // in its own separate file
public void doB(int q, int r, int s){
// does something else that requires x, y and q, r, s
}
}
那么无论如何,我是否应该每次都传递 x 和 y(其中 x,y 是存储在辅助类 func 中的变量)?
a.set(x,y);
a.doA(p,q,r);
我的想法是有一个特殊的容器类来存放 x 和 y。顶级类将具有容器类的实例并使用 set 方法更改 x,y。
// in the top level class:
Container c = new Container(x,y);
a.setContainer(c);
b.setContainer(c);
我的辅助类也会有一个容器实例,它会指向与顶层相同的实例。这样他们就可以访问与顶层相同的 x,y。
我想知道我是否应该这样做
- 使用容器类
- 每次将 x,y 加载到子类中
- ??一些更好的方法??
【问题讨论】:
-
遗憾的是,这里的答案是“视情况而定”。对于这个问题,programmers.se 可能是更丰富的目标。
-
如果内部类不是静态的,那么它也可以访问父类的成员......
-
如果它在不同的文件中,它就不是一个内部类。如果它不扩展超类,它就不是子类。
-
是的,子类对我来说是一个糟糕的选择。我会编辑这个。
标签: java oop class-design