将应用程序转换为MVC并在控制台和gui中运行它

时间:2010-06-12 16:45:04

标签: java model-view-controller user-interface console-application

我有一个简单的java gui计算器,有3个数字系统(有一些错误,但现在没关系)。目前所有代码都在一个文件中。我的任务是将其重写为MVC,并增加在gui或控制台模式下运行它的可能性。我该如何划分这个程序来组织它作为M-V-C?它是否足够正确地添加控制台功能? (我猜我必须将调用JLabel Output的所有方法更改为简单地将输出String存储为模型参数,然后使用View来获取它。)

这是起始代码:

http://paste.pocoo.org/show/224566/

这是我已经拥有的东西:

主要:
http://paste.pocoo.org/show/224567/
型号:
http://paste.pocoo.org/show/224570/
查看:
http://paste.pocoo.org/show/224569/
控制器:
http://paste.pocoo.org/show/224568/

我的模型中没有视图,因此无法调用Output。这是我能看到的第一个问题。

2 个答案:

答案 0 :(得分:0)

目前的分离看起来不错。以下是实现控制台视图的一些指示:

  • 以独立于UI的方式公开控制器的操作。比如抽象的Action类。然后视图调用动作以响应UI手势。这使控制器独立于视图实现,并允许多个视图使用相同的控制器。
    • 从更改模型中添加通知,以使视图保持同步。

然后,Console View可以读取标准输入,并通过查询模型将状态写入标准输出,并使用控制器公开的Actions调用函数。

MVC的一个很好的测试是在同一个模型和控制器上创建两个视图 - 两者都应该正常工作,并从另一个的更改中更新。

答案 1 :(得分:0)

您应该熟悉Observer pattern。此模式将允许您的模型随时更改,但无需了解不同的视图(这是我们正在寻找的)。

简单地说,模型会说:“嘿,我已经改变了。有兴趣的人应该采取相应的行动”。