我需要一些关于规划应用程序架构的建议。我想将我的聊天应用程序的控制台版本升级到JavaFX。所以我开始计划。现在我有一个主要类来管理客户端和一个来管理服务器。乍一看问题就出现了。我想要登录/注册窗口,其中"我"将连接到服务器并验证来自输入字段(如登录等)的数据。当一切正确时,我想将已创建的连接(套接字,流等)传递到主聊天窗口。 我如何以正确的方式做到这一点? 我的意思是如何通过多个窗口管理一个类客户端? 何时/ Where实例化Client对象?
答案 0 :(得分:0)
我是这样做的:
//loading main chat window fxml
FXMLLoader loader = new FXMLLoader(ClientMain.class.getResource("your_path.fxml"));
Parent mainSceneFXML = loader.load();
//getting controller object
MainController ctrl = (MainController)(loader.getController());
现在,您可以从ctrl
访问所需的属性或方法。将MainController
替换为主聊天窗口控制器的类名。
答案 1 :(得分:0)
因为你说:
我需要一些关于规划应用程序架构的建议
JavaFx应用程序有很多模式,例如抽象 MVC (模型 - 视图 - 控制器),MVVM(模型 - 视图 - 视图 - 模型),带服务层的MVC,MVP (Model-View-Presenter)以及模式或体系结构的选择取决于您的项目以及您希望实现的目标。
基于@James_D评论,最好将MVC模型与Service层一起使用(如果您需要服务层来管理您的连接)。我让这个模式能够大致描述这种模式的好处:
现在,对于客户端登录,您可以通过检查客户端输入来验证登录控制器中的数据并进行测试(真或假)(它必须具有存储的数据)来管理许多客户端,因为如果您在此状态下使用静态测试if(userNameField.getText()=="Ala Eddine")
您将处理具有相同共享数据的许多客户端,之后如果输入为false,则可以显示Dialog。等等。
在 ServerController 中,当您启动服务器时,创建一个循环,每次接收新连接时都会收到,在此状态下您有两个选择:
通过创建Inner classes
ServerContoller
中的客户端
添加ServiceImp
类来处理客户端
对于MVC模型,您应该尊重模型之间的关系 OneToOne 和 OneToMany ......等等。您的模型取决于现实生活,例如: