使用mvvm模拟加减计算器
时间: 2024-07-24 21:01:24 浏览: 97
MVVM(Model-View-ViewModel)是一种设计模式,在构建用户界面应用程序时特别有用,比如一个简单的加减计算器。在这种架构中,分为三个核心组件:
1. **模型(Model)**: 它代表数据层,负责存储计算相关的数学运算逻辑,如加法、减法操作。在这个例子中,模型可能有一个`Calculator`类,包含计算方法(add, subtract)。
2. **视图模型(ViewModel)**: 视图模型作为模型和视图之间的桥梁,它封装了与UI交互的逻辑以及数据绑定。对于加减计算器,视图模型会暴露一个计算属性(例如`currentResult`),每当用户输入数字或选择操作符时,更新这个值,并触发视图的刷新。
3. **视图(View)**: 这是用户直接交互的部分,通常是一个界面元素,如文本框用于输入数字,按钮表示操作符。当用户按下“+”或“-”键,这些事件会被传递到相应的视图模型处理,然后更新UI显示结果。
一个简化的MVVM加减计算器示例代码可能如下:
```java
// ViewModel部分
public class CalculatorViewModel {
private double currentNumber1;
private double currentNumber2;
private String operation;
public void setNumbers(double num1, double num2) {
currentNumber1 = num1;
currentNumber2 = num2;
}
public double calculate() {
switch (operation) {
case "+":
return currentNumber1 + currentNumber2;
case "-":
return currentNumber1 - currentNumber2;
// 其他运算...
}
}
}
// View部分(假设使用Kotlin和Jetpack Compose)
@Composable
fun CalculatorScreen(viewModel: CalculatorViewModel) {
TextField(textValue = viewModel.currentNumber1.toString(), onValueChange = { viewModel.setNumbers(it.toDouble()) })
TextField(textValue = viewModel.currentNumber2.toString(), onValueChange = { viewModel.setNumbers(it.toDouble()) })
Button(onClick = { viewModel.operation = "+"; viewModel.calculateAndUpdateUI() }) { "+"}
Button(onClick = { viewModel.operation = "-"; viewModel.calculateAndUpdateUI() }) { "-"}
Text(text = viewModel.currentResult)
}
```