请注意,我是MVC的新手。MVC设计问题
我试图让我的代码尽可能多地分离和测试。 我有一个文本框和按钮的视图。 我想在输入新文字时启用此按钮并遵守特定条件。
理想情况下,我希望这个逻辑决定按钮是否启用或不在视图之外,以便它可以进行单元测试。
我对MVC的理解如下: 在我看来,我有一个参考我的控制器。 在我的控制器中,我有一个对我的模型的参考。 在我的模型中,我有一个对我的视图的引用。
你能告诉我,以下是一个好的设计。 我给模型buttonEnabled添加了一个布尔值。 事件的顺序是这样的: 文本输入在文本框中,文本框中有一个监听器。监听器在Controller上调用textChanged方法,控制器检查是否启用按钮,然后通过setButtonEnabled访问器设置Model的buttonEnabled。 访问器更改buttonEnabled的值,并在视图上调用buttonEnabledChanged()(该方法公开该方法) 这个想法是该视图是模型的特定观察者,并且该模型是一个可理论上具有多个视图的observable ,并且可以在它们全部上调用buttonEnabledChanged()。
请让我知道您的想法。
另请参见此[回复](http://stackoverflow.com/questions/3072979)。 – trashgod 2011-04-15 13:32:19
在你描述的上下文中,我宁愿使用MVP(P,主持人,将包含启用按钮的逻辑)而不是MVC。 – jfpoilpret 2011-04-18 09:22:58
在我看来,上面的答案是击败了分离的目的,尽管这是一个很好的解释。但是这个例子与GUI紧密结合,以至于无法进行单元测试。 – Charbel 2011-04-18 09:32:10