Как уже говорили другие, есть несколько способов сделать это, но способ, которым вы решите это сделать, должен отражать ваши способности (т. Е. Ваш учитель / лектор / и т. Д. Будет знать, вдруг ли вы внедрили Шаблон наблюдателя и сможетене объясните что это).В этой конкретной ситуации я бы использовал подход Singleton, поскольку здесь нет базы данных или чего-то более сложного.
Синглтон - это класс, в котором создается только один его экземпляр и который обеспечивает глобальную точку доступа к объекту.
Вот пример одноэлементного класса и то, как вы могли бы его использовать:
public final class ExampleSingleton {
private static ExampleSingleton instance = null;
private ExampleSingleton() { /*Do not allow instantiation*/ }
public static ExampleSingleton getInstance() {
if (instance == null) {
instance = new ExampleSingleton();
}
return instance;
}
public void sayHello() {
System.out.println("Hello!");
}
}
Приведенный выше класс использует закрытый конструктор, что означает, что вы не можете создать простоту ExampleSingleton
.Это означает, что для получения одноэлементного объекта вы должны сделать что-то вроде:
ExampleSingleton myObject = ExampleSingleton.getInstance();
Затем, чтобы использовать объект, на который вы ссылаетесь myObject
и любые методы в нем (в данном случае sayHello()
.
Для вас это означает, что ваш код может выглядеть примерно так:
public class MyGui1 {
private ExampleSingleton myData = null;
public MyGui1() {
myData = ExampleSingleton.getInstance();
}
public updateData(. . .) {
myData.updateData(. . .);
}
public retrieveData(. . . ) {
myData.retrieveData(. . .);
}
}
public class MyGui2 {
private ExampleSingleton myData = null;
public MyGui2() {
myData = ExampleSingleton.getInstance();
}
. . .
//Do you see where I'm going with this?
}
}
public class Main {
public static void Main(String args[]) {
ExampleSingleton myData = ExampleSingleton.getInstance();
myData.setInitialData(. . .);
MyGui1 = new MyGui1();
MyGui2 = new MyGui2();
//Do more stuff here
}
}
Поскольку оба объекта GUI используют один и тот же синглтон, данные всегда будутбыть доступным для обоих.