Android:MVP。在组件之间进行通信的正确方法

时间:2016-12-18 12:15:18

标签: java android design-patterns callback mvp

我在我的应用程序中实现了MVP模式。 我有一个额外的层,我称之为Repository,它负责运行HTTP个异步请求。我创建了OnTaskCompleteListener接口,用于RepositoryModel之间的通信(Model实现OnTaskCompleteListener)。因此,当Repository完成请求时,它会调用Model中的方法并更新数据。然后,Model使用相同的机制调用Presenter中的方法,让它知道Model已经更新。 令我担心的是,来自RepositoryPresenter的回调链。 是否有更好的方式在MVP的组件之间进行通信,还是要走的路? 我确实尝试了#B; EventBus",但是大量需要的界面让我感到害怕。 Observer似乎不合适,因为每个组件只有一个侦听器(Model侦听Repository,Presenter侦听Model)。 谢谢。

1 个答案:

答案 0 :(得分:0)

经过广泛阅读后,我得出结论,我不需要另一个课程' Repository'委托加载数据。该模型实际应该负责加载和保存数据。 对演示者的方法使用回调方法参数,调用在模型中加载数据的方法是在模型和演示者之间进行通信的好方法。

Presenter.java

@Override
public void loadData(){
    mModel.loadData(new Callback{
        void onSuccess(){
            getView().notifyDataLoaded();
        }

        void onError(){
            getView().notifyErrorOccured();
        }
});

这种模式,演示者和视图以非常清晰和直观的方式在这种方法中链接。 希望这会对某人有所帮助。