在java中的类之间共享更新数据的最佳方法

时间:2013-01-09 01:46:33

标签: java class share

我正在研究一个项目而且我遇到了一个问题,我不知道在类之间共享更新数据的最佳方法。我这样做的当前方式是在其中包含我的类的静态实例,并让所有其他类更改实例而不是原始类。

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将没有更新的变量并且将与旧的变量一起使用,或者它会吗?

1 个答案:

答案 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();
      }
    }

你也可以签出观察者模式。