现在,我将消息写入JTextArea。我想问一下,从OOP理论来看,最好是发送给客户端对JTextArea的引用并直接向其附加文本,或者最好在GUI中创建函数并使其从客户端调用它?当然消息来自服务器。
我知道最有效的方法是第一种,但我相信它不是正确的OOP方式。我发现OOP的效率低于程序性,而不是因为它在抽象上更复杂,但因为许多OOP标准看起来似乎是无效的。谢谢。
答案 0 :(得分:3)
您应该encapsulate GUI的功能。客户不应该对其内部工作有任何了解。相反,您应该提供一个语义上有意义的公共方法来描述它将执行的任务 - 在这种情况下更新显示。
理想情况下,您应该有一个代表您的GUI操作的界面 - 这将使客户端与GUI分离,并且意味着您可以有多个UI实现界面,而客户端不关心它正在使用哪个UI。
答案 1 :(得分:0)
桌面应用程序通常由业务层和表示层组成。 GUI属于表示层。我假设客户属于业务层。
业务层不应该对表示层有任何了解。
答案 2 :(得分:0)
在这种情况下,客户端可以引入一个接口。类似的东西:
interface MessageListener {
void handleNewMessage();
}
然后,我们可以有一个观察者模式。客户端调用已注册的MessageListener。 GUI将MessageListener和注册表实现到客户端。
答案 3 :(得分:0)
关于这个:
我知道最有效的方法是 首先,但我相信它不是 适当的OOP方式。我发现了OOP 效率低于程序性,不是 因为它更复杂 抽象,但因为许多OOP 标准似乎没有用。 感谢。
对于你将要编写的所有代码的大约99%,效率是完全无关紧要的,因为它不会经常运行以注意任何低效率。这当然就是这种情况:GUI事件处理代码是关于性能最高的非关键代码,因为用户甚至不能注意到小于1/100秒的延迟,而且在现代硬件上是永恒的。
此外,对于你所写过的所有代码的100%,完整而正确的问题不仅仅是效率问题。没有人关心你的代码如何有效地处理错误的事情。当可维护,清洁,分离时,生成正确完整的代码会更容易。这正是OO及其惯例尝试(并且通常做到)变得更容易。