在Android中使用MVP体系结构时,可以在View中初始化模型吗?例如,这是View类:
driver.findElement(By.xpath("//input[@value='35\xA0000,00']"));
}
我想知道在实施MVP架构模式时,最好的方法/最佳实践是什么,尤其是对于Android。
之所以在视图中初始化模型,是因为我想通过意图将其传递给另一个活动。 您认为最好的是什么?将模型放在View上还是应该放在演示者上还是可以接受的?
答案 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();
}