我正在研究一个项目而且我遇到了一个问题,我不知道在类之间共享更新数据的最佳方法。我这样做的当前方式是在其中包含我的类的静态实例,并让所有其他类更改实例而不是原始类。
public class A{
public static volatile instance;
public B b = new B();
public C c = new C();
public D d = new D();
public A(){
this.instance = this;
b.changeData();
}
}
public class B{
public void changeData(){
A.instance.d.changeSomethingInD();
}
}
现在,B和C可以访问D对其变量所做的所有更改。有更好的方法吗?
编辑1:我遇到的问题是所有其他类都可以访问更新的变量。这就是我以前做的事情:
public class MainClass extends JavaPlugin{
private RegionLoader rLoader;
private ClassesLoader cLoader;
private MessageHandler mHandler;
private PlayerDates pDates;
public MainClass(){
dirMaker();
mHandler = new MessageHandler(this);
pDates = new PlayerDates(this);
cLoader = new ClassesLoader(this);
rLoader = new RegionLoader(this);
}
//getters and setters
}
但问题是如果RegionLoader在其内部更改了somithing,ClassesLoader将没有更新的变量并且将与旧的变量一起使用,或者它会吗?
答案 0 :(得分:2)
为什么不将A
传递给B
的构造函数。这样您就不需要使用静态数据了。
public class A{
public B b;
public C c = new C();
public D d = new D();
public A(){
b = new B(this);
b.changeData();
}
}
public class B{
private A a;
public B(A a){
this.a = a;
}
public void changeData(){
a.d.changeSomethingInD();
}
}
你也可以签出观察者模式。