【发布时间】:2014-08-31 23:10:24
【问题描述】:
我在最近发布的“Android 最佳实践”一书中读到,用于 android 编程的一个很好的设计模式是 MVVM。在我的最新项目中亲自尝试过它似乎确实有助于将代码分成更易于管理的部分。
View 只处理视图项的创建和 ViewModel 的接口。 ViewModel 实现对视图的接口和handlss 操作以及与模型的交互。示例代码如下:
型号
public class MyModel{
public String myString;
public MyModel(String myString){
this.myString = myString;
}
}
查看
public class MyActivity{
public ViewManager delegate;
public interface ViewManager{
void registerTextView(TextView tvText);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
delegate = new ViewController(this);
TextView tvText = (TextView) view.findViewById(R.id.tvText);
delegate.registerTextView(tvText);
}
}
视图模型
public class ViewController implements MyActivity.ViewManager{
Context activity;
TextView tvText;
MyModel myModel;
public ViewController(Context app_context){
activity = app_context;
myModel = new MyModel("Hello World");
}
@Override
public registerTextView(TextView tvText){
this.tvText = tvText;
tvText.setText(myModel.myString);
}
}
但是,我在其他任何地方都没有在网上看到过这种方法,也无法找到很多信息来支持它是一个很好的 android 设计模式。我也有几个问题,例如:
您应该为每个片段或只是为活动创建一个单独的 ViewModel 吗?
这种方法在配置更改和 Activity 重新创建方面是否表现良好,但会产生另一个类的额外开销? 您可以将上下文投射到您的活动中以启用片段管理器吗?
随着代码变得越来越复杂,这将如何扩展?
在我开始将所有项目转换为 MVVM 之前,有没有人有使用这种设计模式的经验,或者任何人都可以指出一些好的学习材料的方向???
【问题讨论】:
-
你可以用你的代码做任何你喜欢的事情,没有标准。我个人不使用这种模式;除非我出于某种原因需要它,否则我觉得它只是增加了不必要的抽象。
标签: android design-patterns android-activity mvvm android-fragments