1

私はプロジェクトに取り組んでいますが、問題が発生しました。更新されたデータをクラス間で共有する最善の方法がわかりません。私がこれを行っている現在の方法は、クラスの静的インスタンスをその中に持ち、他のすべてのクラスが元のクラスではなくインスタンスを変更することです。

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

これで、D が変数に対して行ったすべての変更に、B と C からアクセスできます。これを行うためのより良い方法はありますか?

編集 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 がそれ自体の中で何かを変更した場合、ClassesLoader は更新された変数を持たず、古いもので動作しますか?

4

1 に答える 1

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

オブザーバーパターンをチェックアウトすることもできます。

于 2013-01-09T01:55:46.010 に答える