gpt4 book ai didi

java - 使用 Observer 和 Observable 解决应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:50 24 4
gpt4 key购买 nike

我有一个应用程序,我需要用户 Observer 来解决。由于代码实现很长,我想总结一下这个问题。

我启动应用程序。

我有一个登录窗口,我可以在其中选择秘书或学生。

秘书可以为给定类(class)的学生添加学生、类(class)和结果。学生只能看到它的结果。

我需要使用 Observer,这样如果秘书登录到该应用程序的一个实例中,而学生登录到该应用程序的另一个实例中,当秘书在类(class)中为该学生添加结果时,该学生会立即看到在其列表中列出了新类(class)及其结果。

数据从txt文件中读取。

我的解决方案。SecretaryWindow 是一个观察者StudentWindow 是一个观察者ResultRepositoryFile 是 Observable 对象

当我单击 AddButton 时, Controller 将 Result(studentName, courseName, result) 添加到 ResultRepositoryFile。 SecretaryWindow 观察者看到后,打印一条消息并保存包含 ResultRepositoryFile 的 txt 文件。

现在在 StudentWindow 中我点击一个 RefreshButton 并且 ResultRepositoryFile 被重新加载到这个窗口的列表中,显示新添加的 Result.class

这样做是否正确,因为我有疑问。

如何使用 Observer 同步同一应用程序的两个实例?

感谢阅读,希望你能帮助我。

最佳答案

如果您要让多个人同时使用您的应用程序,您应该使用数据库,而不是文本文件。如果多人同时写入文本文件,文本文件可能会损坏。

我建议使用像 MySQL 这样的关系数据库。

由于您的学生窗口有一个刷新按钮,您的学生窗口将始终从数据库中提取最新数据。

当秘书将结果添加到数据库时,数据库将锁定,并且不允许任何人访问该结果,直到添加提交到数据库之后。数据库允许在秘书添加结果的同时访问其他结果。

您不需要 Observed 和 Observable,除非您想向学生发出秘书已将结果添加到数据库的信号。

编辑添加:

秘书窗口是Observed,Observable是秘书添加到文本文件的结果。

学生窗口根据 Observable 更新窗口。秘书窗口必须能够根据结果的学生 ID 访问学生窗口实例。

关于java - 使用 Observer 和 Observable 解决应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13916896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com