我读了很多关于Java,Swing,MVC和SwingWorker的内容,但我对模型在MVC中的作用感到困惑.
我正在构建一个有两个按钮的应用程序:
还有一个用于记录的文本框.
我目前在做什么:
我的第一个问题:我应该将状态存储在模型中吗?也就是说,与操作顺序有关的信息:首先必须在可以读取文件之前选择文件.那么我的模型将成为状态机.
我的第二个问题:我让Controller显示OptionPane是否正确?
然后开始有趣.用户单击"读取文件"按钮.我做的与"选择文件"按钮大致相同.View调用Controller,但Controller使用SwingWorker读取文件,因为这不应该在EDT上完成.SwingWorker发布中间日志消息,这些消息通过对View(SwingWorker.process()方法)的引用添加到文本框中.Controller从SwingWorker中侦听"状态"属性更改.当'state'为'DONE'时,Controller调用'get()'函数.如果一切正常,结果将在模型中设置.如果不是,则处理异常.
我的第三个也是最重要的问题:模型不应该读文件吗?!MVC的重点在于关注点的分离,以及所有的好处(可测试性等).如果我想要一个新视图(例如CLI)怎么办?那么我的模型现在只是一个数据模型.它没有关于如何读取文件的线索!那么线程问题呢?
希望你能给我一些好的建议.互联网上有很多关于SwingWorker,MVC等的例子.但我的问题不在于如何对它们进行编码,而是如何设计.