类之间的Java数据文件共享

我正在创建一个从文件(Serialized objectInputStream)读取的小程序,该文件是一个注册表列表,其中每个条目都有一个设置为true或false的布尔变量。

在这个程序中,我有两个单独的JPanel类。 一个是A类,可以改变这些变量的值,另一个是B类,检查这些变量是真还是假。 这两个类是在带有main方法的gui-class下创建的。

如果我更改A类中的变量,我怎样才能看到B级中的新更新值? 我试图在每个类中做一个ObjectInput-输出流。 这意味着对于每次更改,类都会将其写入文件并在更改/读取之前将其读回。 这有效,但它是最佳的吗? 有一个更好的方法吗?

程序模型

我认为这是观察者和模型视图控制器模式的典型用例。

controller注册模型及其观察者。

它接收请求(事件)以进行更改并将它们委托给model 。 当模型改变时,它通知observers模型具有新状态,并且他们应该做一些事情来获得这些改变。

在你的情况下, Main可以用作ControllerObservers将是你的Panel1Panel2

剩下的就是你需要创建一个新类的Model ,只需要读取和写入文件。 实际上你似乎有这个代码在A级,即Panel1 。 此代码需要从它移动到新类。

请注意,jdk已经提供了Observer接口和Observable类。

编辑

java中的简单示例( 链接 )

您可以创建一个包含您阅读的信息的C类。 因此,B类读取数据并将信息放入C类。当A类更改值时,它将触发事件以通知B类。

您可以使用HashMap来存储数据。 String是值的名称,Boolean是值。 然后,您可以在类B中创建类似public void update(String name, boolean newValue)方法。此方法将更新Value,然后在需要通知有关新值的所有类中调用方法。

您应该将数据与gui分开。 尝试使用模型 – 视图 – 控制器设计。 此外,您可以使用A / B类中的ActionEvents / ActionListeners。 请提供有关数据显示方式的更多信息。

您可以使用Observer Design模式来处理这种情况或用例。

观察者模式是一种软件设计模式,其中一个称为主体的对象维护其依赖者列表,称为观察者,并通常通过调用其中一种方法自动通知它们任何状态变化。 它主要用于实现分布式事件处理系统。