设计模式的C语⾔实现--MVC模式
MVC 编程模式
MVC(Model View Controller 模型-视图-控制器)设计应⽤程序的模式:
Model(模型)表⽰应⽤程序核⼼(⽐如数据库记录列表)。
View(视图)显⽰数据(数据库记录)。
Controller(控制器)处理输⼊(写⼊数据库记录)。
Model(模型)是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)是应⽤程序中处理数据显⽰的部分。
通常视图是依据模型数据创建的。
Controller(控制器)是应⽤程序中处理⽤户交互的部分。
通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据。
MVC 分层有助于管理复杂的应⽤程序,因为您可以在⼀个时间内专门关注⼀个⽅⾯。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应⽤程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发⼈员可同时开发视图、控制器逻辑和业务逻辑。
实现
我们将创建⼀个作为模型的 Student 对象。StudentView 是⼀个把学⽣详细信息输出到控制台的视图类,StudentController 是负责存储数据到 Student 对象中的控制器类,并相应地更新视图 StudentView。
MVCPatternDemo,我们的演⽰类使⽤ StudentController 来演⽰ MVC 模式的⽤法。
mvc的controller
C++实现
#include<iostream>
#include<string>
using namespace std;
//Model模型类Student
class Student
{
public:
Student() {};
~Student() {};
string getRollNo();
void setRollNo(string rollNo);
string getName();
void setName(string name);
private:
string rollno;
string name;
};
string Student::getRollNo()
{
return rollno;
}
void Student::setRollNo(string rollNo) {
this->rollno = rollNo;
}
string Student::getName()
{
return name;
}
void Student::setName(string name) {
this->name = name;
//视图View类StudentView
class StudentView
{
public:
StudentView() {};
~
StudentView() {};
void printStudentDetails(string studentname, string studentrollno);
};
void StudentView::printStudentDetails(string studentname, string studentrollno) {
cout << "Student: " << endl
<< "Name: " << studentname << endl
<< "roll No: " << studentrollno << endl;
}
//controller控制器类StudentController
class StudentController
{
public:
StudentController(Student model, StudentView view);
~StudentController() {};
void setStudentName(string name);
string getStudentName();
void setStudentRollNo(string rollno);
string getStudentRollNo();
void updateView();
private:
Student model;
StudentView view;
};
StudentController::StudentController(Student model, StudentView view)
{
this->model = model;
this->view = view;
}
void StudentController::setStudentName(string name)
{
this->model.setName(name);
}
string StudentController::getStudentName()
{
return this-&Name();
}
void StudentController::setStudentRollNo(string rollno)
{
this->model.setRollNo(rollno);
}
string StudentController::getStudentRollNo()
{
return this-&RollNo();
}
void StudentController::updateView()
{
this->view.printStudentDetails(this-&Name(), this-&RollNo());
int main()
{
Student model;
model.setName("Robert");
model.setRollNo("10");
StudentView view;
StudentController controller(model, view);
controller.updateView();
controller.setStudentName("John");
controller.updateView();
system("pause");
return 0;
}
JAVA 实现
步骤 1
创建模型。
public class Student {
private String rollNo;
private String name;
public String getRollNo() {
return rollNo;
}
public void setRollNo(String rollNo) {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
步骤 2
创建视图。
public class StudentView {
public void printStudentDetails(String studentName, String studentRollNo){      System.out.println("Student: ");
System.out.println("Name: " + studentName);
System.out.println("Roll No: " + studentRollNo);
}
}
步骤 3
创建控制器。
public class StudentController {
private Student model;
private StudentView view;
public StudentController(Student model, StudentView view){
this.view = view;
}
public void setStudentName(String name){
model.setName(name);
}
public String getStudentName(){
Name();
}
public void setStudentRollNo(String rollNo){
model.setRollNo(rollNo);
}
public String getStudentRollNo(){
RollNo();
}
public void updateView(){
view.Name(), RollNo());  }
}
步骤 4
使⽤ StudentController ⽅法来演⽰ MVC 设计模式的⽤法。