以下是一个简单的示例,展示了如何在Android应用程序中使用MVVM架构和服务定位器模式。
首先,我们需要创建一个包含视图、视图模型和模型的基本结构。
//ViewModel.java
public class ViewModel implements INotifyPropertyChanged {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
notifyPropertyChanged(BR.message);
}
@Override
public void addOnPropertyChangedCallback(OnPropertyChangedCallback callback) {
// 不需要实现
}
@Override
public void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback) {
// 不需要实现
}
}
//Model.java
public class Model {
private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
//ServiceLocator.java
public class ServiceLocator {
private static ServiceLocator instance;
private Model model;
private ViewModel viewModel;
private ServiceLocator() {
model = new Model();
viewModel = new ViewModel();
viewModel.setMessage(model.getData());
}
public static ServiceLocator getInstance() {
if (instance == null) {
instance = new ServiceLocator();
}
return instance;
}
public ViewModel getViewModel() {
return viewModel;
}
public Model getModel() {
return model;
}
}
public class MainActivity extends AppCompatActivity {
private TextView textView;
private ViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
viewModel = ServiceLocator.getInstance().getViewModel();
// 设置数据绑定
viewModel.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
if (propertyId == BR.message) {
textView.setText(viewModel.getMessage());
}
}
});
}
}
现在,当模型中的数据更改时,视图模型会通知视图进行相应的更新。
这是一个简单的示例,仅用于演示Android MVVM和服务定位器的基本使用方法。实际应用中,可能需要更复杂的逻辑和更多的组件。