设计MVC控制器层(Designing mvc controller layer)

2019-10-18 15:14发布

我试图理解和实践MVC模式,以提高我的发展。 于是我开始重构我曾经写过,到目前为止已经发展的应用程序。 这是完全清楚我的模型看起来像,也认为是准备好为止。 但现在我正在寻找一个很好的做法,设计我的控制器层。
我创建了真实分割在不同的主要部件的视图。 让我给你一个简单的例子:

有3个小组该组特定的组件:

  • “FilePanel”,拿着一个JTextField和两个Jbutton将
  • “dataPanel上”,保持所有组件neccessary显示一些数据和一些Jbutton将
  • “CalendarPanel”,显示部分日历表

这三个面板分别在一个单独的类和事后实例化,并配置在一个GUI类。

没有实际的问题。 由于我分隔板,我应该如何建立控制器? 如果每个小组获得自己的控制器类(FileController,DataController类,CalendarController)? 还是说只是一个控制器类为整个看法?

如果我每个小组创建一个控制器类,如何能实现我的控制器互相沟通? 例如:如果一个按钮被点击“FilePanel”,我怎么通知“dataPanel上”这件事?

你能给我的最佳实践的例子?

Answer 1:

是小组从根本上分开?

NO:设定面板基本上是一个状态。 例如,该板表示示出在控制之下的相同项目的不同方面的控制台。 用户选择一个项目,所有其他面板更新显示视图的项目。 在这种情况下,一个控制器就足够了。

YES:也就是说可以在每个人通过各种状态independendently动? 这是你可能有一个“门户”风格的应用程序种类realtionship的。 用户可以在每个面板中工作得独立地为 - 极端的例子,两个独立的侧由端在一个整体观看者的浏览器窗格。 这是你在用户对不同的后端系统打开的窗口复合应用程序获得的那种效果。 有时,在一个窗口事业东西的用户操作,以在另一个窗口发生,但通常他们单独运行。 在这种情况下,我们有可以具有单独的控制器每个负责一个面板的状态。 他们可以通过事件处理机制,相互沟通。 文件面板中用户点击,查看联系人的控制,发布“文件中选择”事件,其有效载荷是该文件的ID。 需要注意的是,“点击”事件被翻译成非UI特定的事件。

通过具有独立的控制器,我们去耦当前组板的细节。 Addind一个新的面板只需要新的控制器事件寄存器。



文章来源: Designing mvc controller layer