我在最近发布的《Android 最佳实践》一书中读到,用于 Android 编程的一个很好的设计模式是 MVVM。我自己在最新的项目中尝试过,它似乎确实有利于将代码分成更易于管理的部分。
View 仅处理视图项的创建和 ViewModel 的接口。 ViewModel 实现了对视图的接口和处理操作以及与模型的交互。示例代码如下:
Model
public class MyModel{
public String myString;
public MyModel(String myString){
this.myString = myString;
}
}
View
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 设计模式。我还有几个问题,例如:
您是否应该为每个片段或仅为 Activity 提供单独的 ViewModel?
这种方法在配置更改和活动重新创建以及另一个类的额外开销方面是否表现良好?
您可以将上下文投射到您的活动中以启用fragmentManager 吗?
随着代码变得更加复杂,这种规模如何扩展?
有没有人有在 Android 上使用这种设计模式的经验,或者在我开始将所有项目转换为 MVVM 之前,有人可以为我指出一些好的学习材料吗???