mvc模式代码举例

mvc代码实现:
该篇为《mvc 和 mpv 的差别》提供理解帮助
#include
using namespace std;
#include

// 抽象层
class Data;
class View;
class Controller;
class Model{
public:
string name;
int age;
virtual void setView(View* v)=0;
virtual void update()=0;
virtual void setData(Data* d)=0;
};
class View{
public:
virtual void setController(Controller* c)=0;
virtual void userRequest()=0;
virtual void showData(Model* m)=0;
};
class Controller{
public:
virtual void setModel(Model* m)=0;
virtual void requestData()=0;
};
//具体层
class Data{
public:
Data(string n,int a){
name = n;
age =a;
}
string name;
int age;
};
class ConcreteModel: public Model{
public:
View* mv;
virtual void setView(View* v){
mv = v;
}
virtual void update(){
mv->showData(this);
}
virtual void setData(Data* d){
name = d->name;
age = d->age;
update();
}
};
class ConcreteView: public View{
public:
Controller* mc;
virtual void setController(Controller* c){
mc = c;
}
virtual void showData(Model* m){
cout<<“name:”<name<<"\n";
cout<<“age:”<age<<"\n";
}
virtual void userRequest(){
mc->requestData();
}
};
class ConcreteController:public Controller{
public:
Model* mm;
virtual void setModel(Model* m){
mm = m;
}
virtual void requestData(){
Data* data = new Data(“xiao ming”, 5);
mm->setData(data);
}
};
//客户端调用
int main()
{
cout<<“mvc模式\n”;
Model* m = new ConcreteModel();
View* v = new ConcreteView();
Controller* c = new ConcreteController();
m->setView(v);
v->setController©;
c->setModel(m);
v->userRequest();

//看代码不用考虑以下内容
int cin_a;
cin>>cin_a;
return 0;

}

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/88166173