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 回答