我正在开发一个用于组织个人音乐集的Java应用程序,允许用户借助表格中显示的文本列表搜索他们的数字音乐库,选择要播放的歌曲并提供有关它们的信息,例如Rekordbox(https://rekordbox.com/en/)。
在对如何设计和实现这样一个系统进行一些研究后,我遇到了模型 - 视图 - 演示者设计模式,据我所知,它是一种允许灵活,可重用和测试驱动的代码。
所以来解决我的问题:
所以,我的问题是如何实现Presenter,以便不同的视图(使用不同的模型)能够在彼此之间进行通信和共享信息?我应该有一个演讲者可以与之交谈的演示者,还是每个视图都有一个演示者?如果有可能有一个演示者如何实现?如果我有 MenuBarView,TablePanelView和PlayerPanelView 的一个Presenter,并且这些视图包含在另一个视图( MainFrameView )中,我应该以某种方式组合演示者,并且如果有,怎么样?
答案 0 :(得分:0)
如果我是你,我会在尝试MVP之前尝试MVC(模型视图控制)模式。它非常相似,但我想说它更容易理解。
我不会为MenuBar创建自己的视图,因为您可能不会动态创建它。只需在MainFrameView中编写一个初始化它的方法,然后在MainView的构造函数中调用它。
模型是您使用的项目的属性。现在,如果您想创建一个具有自己模型的Panel,但又想要从MainFrameView访问该模型,您只需为它编写一个Getter / Setter。在MainFrameView中看起来像这样:
public TablePanelView tpv;
public void initTablePanelView(TablePanelModel tpm){
tpv = new TablePanelView();
tpv.setModel(tpm);
}
因此,您可以使用在TablePanelView中编写的公共方法getModel()或setModel()来访问模型。
我希望有所帮助。