MVC模式即Model-View-Controller(模型-视图-控制器)模式,这种模式适合应用程序的分层开发;
- Model(模型):模型代表一个存取数据的一个对象。它也可以带有逻辑,在数据变化时更新控制器;
- View(视图):视图代表模型数据的可视化;
-
Controller(控制器):控制器作用于模型和视图上。它可以控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开;
MVC模式框图.PNG
- 实例:
我们创建一个作为模型的Student对象;StudentView是一个把学生信息输出到控制台的视图类;StudentController是负责存储数据到Student对象的控制器类,并相应的更新视图的StudentView。
原理框图.PNG
- 代码实现:
#include <iostream>
#include <string>
using namespace std;
//创建模型
class Student
{
private:
string m_name; //姓名
string m_rollNo; //班级
public:
void setName(string name)
{
m_name=name;
}
string getName()
{
return m_name;
}
void setRollNo(string rollNo)
{
m_rollNo=rollNo;
}
string getRollNo()
{
return m_rollNo;
}
};
//创建视图
class StudentView
{
public:
void printInfo(string name,string rollNo)
{
cout <<"name:"<<name<<" "<<"rollNo:"<<rollNo<<endl;
}
};
//创建控制器
class StudentController
{
private:
Student m_studentModel;
StudentView m_studentView;;
public:
StudentController(Student model,StudentView view)
{
m_studentModel=model;
m_studentView=view;
}
void setStudentName(string name)
{
m_studentModel.setName(name);
}
string getStudentName()
{
return m_studentModel.getName();
}
void setStudentRollNo(string rollNo)
{
m_studentModel.setRollNo(rollNo);
}
string getStudentRollNo()
{
return m_studentModel.getRollNo();
}
void upDateView()
{
m_studentView.printInfo(m_studentModel.getName(),m_studentModel.getRollNo());
}
};
//测试代码
int main()
{
// 1、创建一个学生信息 类似于从数据库中取出一个数据
Student *model = new Student();
model->setName("Vigor");
model->setRollNo("10");
// 2、创建一个视图:把学生详细信息输出到控制台
StudentView *view = new StudentView();
// 3、创建一个控制器
StudentController *controller = new StudentController(*model,*view);
// 4、更新模型数据至视图
controller->upDateView();
// 通过视图修改学生姓名
controller->setStudentName("Snow");
controller->upDateView();
}
//////////////////////输出结果////////////////////////
name:Vigor rollNo:10
name:Snow rollNo:10