代码之家  ›  专栏  ›  技术社区  ›  Sermilion

安卓:MVP。组件间通信的正确方式

  •  2
  • Sermilion  · 技术社区  · 8 年前

    我已经在我的应用程序中实现了MVP模式。 我有一个额外的层,我称之为 Repository ,负责运行 HTTP 异步请求。我创造了 OnTaskCompleteListener 之间的通信接口 储存库 Model ( 模型 工具 OnTaskCompleteListener ). 因此,当存储库完成请求时,它调用模型中的方法并更新数据。然后,模型使用相同的机制调用Presenter中的方法,让它知道模型已经更新。 我担心的是,来自 储存库 高达 Presenter . 是否有更好的方式在MVP的组件之间进行通信,还是这样? 我确实尝试过“EventBus”,但大量需要的接口吓跑了我。 观察者似乎不适合,因为每个组件只有一个侦听器(模型侦听存储库,演示者侦听模型)。 非常感谢。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Sermilion    8 年前

    在广泛阅读之后,我得出了一个结论,我不需要另一个类“Repository”来委托数据加载。模型实际上应该负责: 加载和保持数据 . 为presenter的方法使用回调方法参数,该方法调用在模型中加载数据的方法,这是模型和presenter之间进行通信的一种好方法。

    Presenter.java

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

    通过这种方式,模型、演示者和视图以一种非常清晰和直观的方式连接在一起。 希望这能帮助别人。