在视图或演示者中初始化模型-MVP模式

时间:2019-07-17 13:42:53

标签: android android-intent mvp

在Android中使用MVP体系结构时,可以在View中初始化模型吗?例如,这是View类:

driver.findElement(By.xpath("//input[@value='35\xA0000,00']"));

}

我想知道在实施MVP架构模式时,最好的方法/最佳实践是什么,尤其是对于Android。

之所以在视图中初始化模型,是因为我想通过意图将其传递给另一个活动。 您认为最好的是什么?将模型放在View上还是应该放在演示者上还是可以接受的?

3 个答案:

答案 0 :(得分:0)

mvp的主要作用是,它将数据层和视图层分开,如果您在视图类中使用模型,则意味着您的视图正在直接与数据通信。

最好的方法是在演示者层中使用模型。 如果要将数据传递给模型,只需在Presenter构造函数中再添加一个参数即可。

    Presenter(View view,String data) {
        this.view = view
        this.data = data
    }

答案 1 :(得分:0)

在此示例中,如果您仅尝试通过从视图的布局(ViewActivity)获取对象的值来传递对象,则实现MVP时没有最佳方法/最佳实践。我建议:

intent.putExtra(String, Serializable/Parcelable)

并在那里设置对象的参数。

希望能回答您的问题。

答案 2 :(得分:0)

您可以做的一件事就是通过该对象向演示者进行依赖注入。

示例

查看

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);

    presenter = new Presenter(this,new User());

}

然后在演示者处,您可以从视图中获取该实例,在演示者内部对其进行处理的每个逻辑中使用该实例,然后使用演示者的方法从该模型中获取所需的信息。 / p>

演示者

Presenter(View view,User user) {
        this.view = view
        this.user = user
    }

private String exampleMethod(){
return user.firstName + " " + " StackOverflow "
}

在这里,您将看到,每次在视图中实例化Presenter时,presenter内都会有1个模型实例,因此,每次要向视图中获取数据时,只需调用Presenter即可显示。

查看

onCreate(){
...
presenter = new Presenter(this,new User());
presenter.exampleMethod();
}