我正在学习 MVC 模式。我创建了这个非常简单的代码作为演示。
代码的目标很简单。我创建了一个初始速度为每小时 95 英里的汽车对象。有 1 个标签显示当前速度,2 个按钮,增加和减少速度。
单击每个按钮时,速度增加或减少 1,标签显示修改后的速度。一旦速度超过 100,增加按钮将被禁用,用户现在只能降低速度。一旦速度降低到 100 以下,增加按钮将再次启用。
这是我的模型、 View 和 Controller 的代码。
接口(interface)模型
public interface IModel
{
int getCurrentSpeed();
int increaseSpeed();
int decreaseSpeed();
void updateObserver();
void setView(IView objView);
}
carModel 类(来自 IModel 的具体类)
public class carModel : IModel
{
private IView objLocalView;
private int currentSpeed;
//Constructor
public carModel(int carSpeed)
{
this.currentSpeed = carSpeed;
}
public void setView(IView objView)
{
objLocalView = objView;
}
public int increaseSpeed()
{
currentSpeed++;
updateObserver();
return currentSpeed;
}
public int decreaseSpeed()
{
currentSpeed--;
updateObserver();
return currentSpeed;
}
public void updateObserver()
{
objLocalView.updateStatus(this);
}
public int getCurrentSpeed()
{
return currentSpeed;
}
}
接口(interface) IController
public interface IController
{
void requestIncreaseSpeed();
void requestDecreaseSpeed();
}
carController 类(IController 的具体类)
public class carController : IController
{
private IModel objLocalModel;
private IView objLocalView;
//constructor
public carController(IModel objModel, IView objView)
{
objLocalView = objView;
objLocalModel = objModel;
objLocalModel.setView(objView);
}
public void requestIncreaseSpeed()
{
int modifiedSpeed = objLocalModel.increaseSpeed();
checkSpeedLimit(modifiedSpeed);
}
public void requestDecreaseSpeed()
{
int modifiedSpeed = objLocalModel.decreaseSpeed();
checkSpeedLimit(modifiedSpeed);
}
public void checkSpeedLimit(int modifiedSpeed)
{
if (modifiedSpeed > 100)
{
objLocalView.disableIncreaseSpeed();
}
else
{
objLocalView.enableIncreaseSpeed();
}
}
}
接口(interface)IView
public interface IView
{
void enableIncreaseSpeed();
void disableIncreaseSpeed();
void updateStatus(IModel objModel);
}
form1.cs(用户将看到的 View 类)
public partial class Form1 : Form, IView
{
private IModel objModel;
private IController objController;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
objModel = new carModel(95);
objController = new carController(objModel, this);
updateStatus(objModel);
}
public void enableIncreaseSpeed()
{
btnIncrease.Enabled = true;
}
public void disableIncreaseSpeed()
{
btnIncrease.Enabled = false;
}
public void updateStatus(IModel objModel)
{
lblCurrentSpeed.Text = "";
lblCurrentSpeed.Text = objModel.getCurrentSpeed().ToString();
}
private void btnIncrease_Click(object sender, EventArgs e)
{
objController.requestIncreaseSpeed();
}
private void btnDecrease_Click(object sender, EventArgs e)
{
objController.requestDecreaseSpeed();
}
}
我不确定这是否是一个合适的 MVC 设计?因为我看不出与常规 3 层架构有什么不同(除了模型和 View 在这里通信,这在 3 层架构中不会发生)
最佳答案
由于您正在尝试实现经典 MVC,因此信息流是正确的。
唯一似乎有点不对劲的是“模型”。您假设模型是一个类。好吧……不是。模型应该是一个层,它包含了所有领域的业务逻辑。
关于c# - 这段代码是合适的 MVC 架构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733656/