我正在以MVP风格编写Java Swing应用程序。该模型适用于与此问题无关的不同线程中的各种计算。发生这些更新时,我调用EventQueue.invokeLater
来更新GUI。这些线程切换调用是否应发生在Presenter或View?
演示者的论点:
EventQueue.invokeLater
,这是浪费的工作观点的论据:
Executor
依赖项我不确定。什么是最佳做法?
答案 0 :(得分:0)
我对MVP的理解是,您希望您的Presenter通过单独的界面与您的View交谈。有关高级别的解释,请参阅this question。该接口是您调用invokeLater的地方。这将使单元测试更容易编写。
另外,仅供参考,您可以在调用invokeLater或invokeAndWait之前调用EventQueue.isDispatchThread()
进行检查。 InvokeLater不会伤害从EDT调用它的任何东西,但是invokeAndWait会抛出异常。