Jav*_*aSa 2 java sockets oop swing cyclic-reference
1.我想知道以下结构是否不正确,原因是什么,以及解决方案是什么:假设我已经实现了网络游戏的客户端客户端有2个主要包:
A.GUI - 持有所有摆动Jpanels等
B.LogicEngine
在Logic引擎中,我有一个名为clientThread的类,其主要目标是与服务器通信以获取在Gui Panel上执行的命令,并且还可以通过Gui Panels上的用户选择发回信息.
2.为了做到这一点,我倾向于在clientThread中引用我的主Gui面板,反之亦然,在两类不同的项目之间进行循环引用是错误的吗?
3.在面向对象编程问题上执行要在类内部显示的内容如客户端线程是错误的,客户端线程负责管理游戏流程,尽管它在逻辑引擎包上?
4.如果Gui部分知道并使用逻辑部分是一个问题吗?
想听听一些建议
非常感谢
显然,GUI应该依赖于引擎,而不是相反(并且,上帝禁止,它们不应该相互依赖).
您的问题实际上非常常见且易于解决.引擎线程应允许客户端代码安装一个侦听器,每次发生时都会通知该侦听器.比GUI实现该侦听器并安装它.请注意,游戏逻辑引擎只知道侦听器接口,而不是GUUI包中的特定实现.
这是Observer模式的一个实现,它有几个优点:
最后,从逻辑线程操作GUI没有任何问题,无论你必须知道事件调度线程.