实现MVC模式来显示激光器的当前状态是一个很好的练习。下面是一个简单的C++实现示例,展示了如何用MVC模式表示激光器的状态,包括开/关状态、输出功率和工作频率。
1. Model(模型)
模型部分负责保存激光器的状态数据。
#include <iostream>
#include <string>
class LaserModel {
private:
bool isOn;
double power; // 输出功率,单位:瓦特
double frequency; // 工作频率,单位:赫兹
public:
LaserModel() : isOn(false), power(0.0), frequency(0.0) {}
void turnOn() {
isOn = true;
}
void turnOff() {
isOn = false;
}
void setPower(double p) {
power = p;
}
void setFrequency(double f) {
frequency = f;
}
bool getStatus() const {
return isOn;
}
double getPower() const {
return power;
}
double getFrequency() const {
return frequency;
}
};
2. View(视图)
视图部分负责显示激光器的状态。
class LaserView {
public:
void displayStatus(const LaserModel& model) {
std::cout << "激光器状态: " << (model.getStatus() ? "开" : "关") << std::endl;
std::cout << "输出功率: " << model.getPower() << " W" << std::endl;
std::cout << "工作频率: " << model.getFrequency() << " Hz" << std::endl;
}
};
3. Controller(控制器)
控制器部分负责处理用户输入并更新模型和视图。
class LaserController {
private:
LaserModel& model;
LaserView& view;
public:
LaserController(LaserModel& m, LaserView& v) : model(m), view(v) {}
void turnOn() {
model.turnOn();
view.displayStatus(model);
}
void turnOff() {
model.turnOff();
view.displayStatus(model);
}
void updatePower(double power) {
model.setPower(power);
view.displayStatus(model);
}
void updateFrequency(double frequency) {
model.setFrequency(frequency);
view.displayStatus(model);
}
};
4. Main 函数
最后,编写主函数来展示如何使用这些类。
int main() {
LaserModel model;
LaserView view;
LaserController controller(model, view);
// 示例操作
controller.turnOn();
controller.updatePower(5.0);
controller.updateFrequency(500.0);
controller.turnOff();
return 0;
}
代码说明
- LaserModel: 负责维护激光器的状态。
- LaserView: 用于输出激光器的当前状态。
- LaserController: 处理操作请求并更新模型和视图。
- main函数: 创建模型、视图和控制器的实例,演示如何控制激光器。
你可以在这个基础上扩展功能,比如添加用户输入来动态控制激光器的状态、功率和频率等。