【发布时间】:2014-09-01 01:15:32
【问题描述】:
我正在开发一个Java Swing 应用程序,并且我正在遵循 MVC 方法。我有一个控制器,然后我有我的模型和我的视图。
Model 和View 只能通过Controller 进行通信。 Controller 通过接口与Model 和View 通信,导致大量嵌套代码。
在我的老板审查了代码后,他抱怨说它不是模块化的。他想要一种更加模块化的方法。他可以毫不费力地放入一个新模块或移除一个模块。
对于模块,他的意思是工具栏、表格、菜单栏……所有这些都与我的View 模型有关。
他也不喜欢他看到的所有接口和嵌套代码。
您对我有什么建议可以改变我的方法,而不会弄乱我已经拥有的所有代码(代码真的很多,真的很多!)。
我在谷歌上搜索了“java mvc 模块化”,但没有找到太多相关信息。
我认为可以解决我的问题的方法是使用EventBus。模块只需要使用总线发送一个事件,控制器就会处理它。至少不再有所有这些接口的嵌套代码。
在巴士上,我会做一些类似的事情(在模块上):
bus.post(new MyEvent());
在控制器上:
@Subscribe
public void onEventMyEvent(MyEvent event) {
// handle the event
}
--------------- 编辑 -------------
阅读用户trashgod 提供的链接(在cmets 部分中)并得出结论,我现在正在使用此图像所代表的MVP (Model View Presenter):(图像归功于udalmik 和在这里找到:enter link description here)
【问题讨论】:
-
你的问题是?
-
可能duplicate:“不是每个交互都需要通过应用程序的控制器。”
-
@MadProgrammer 如果可以使用 MVC,我如何使我的方法更加模块化
-
我认为您正在将您的应用程序视为一个整体并将 MVC 应用于它,这是错误的。应用程序具有层,其中可能包含多个 MVC 模式,这允许更大程度的职责分离和解耦,从而允许替换 UI 的不同区域而不影响其他区域。请参阅trashgod提供的链接,该链接描述得更好
-
@trashgod 阅读您的链接后,我得出的结论是,我正在使用
MVP (Model View Presenter),正如 udalmik 答案中所述。
标签: java swing design-patterns model-view-controller module