C++ 如何在C+中的模型视图控制器之间传递数据+;实现MVC架构?
我的朋友认为,将模型obj传递给视图是可以的。但据我所知,这违反了MVCArch,因为如果view收到一个模型obj,它就知道模型类的存在。视图中的obj类可用于操纵模型类 根据MVC架构,哪个版本是正确的?如果没有提出一个解决方案,并解释如何在C++中实现MVC。 非常感谢。:)C++ 如何在C+中的模型视图控制器之间传递数据+;实现MVC架构?,c++,model-view-controller,view,controller,C++,Model View Controller,View,Controller,我的朋友认为,将模型obj传递给视图是可以的。但据我所知,这违反了MVCArch,因为如果view收到一个模型obj,它就知道模型类的存在。视图中的obj类可用于操纵模型类 根据MVC架构,哪个版本是正确的?如果没有提出一个解决方案,并解释如何在C++中实现MVC。 非常感谢。:) **********//版本1**************** 类模型 { int rollNO;字符串名称; 公众: void saveToDataBase() { name=//保存到数据库 rollNo=//保
**********//版本1****************
类模型
{
int rollNO;字符串名称;
公众:
void saveToDataBase()
{
name=//保存到数据库
rollNo=//保存到数据库
}
void fetchFromDataBase()
{
name=//从数据库获取
rollNo=//从数据库获取
}
};
类控制器
{
m型,*pm;
观点五;
v、 getData(*pm);
pm->saveToDataBase();
m、 fetchFromDataBase();
v、 showData(m);
};
类视图
{
getData(型号*pm)
{
cin>>pm->rollNo;
cin>>pm->名称;
}
showData(m型)
{
库特罗诺;
雷顿·罗尔诺;
}
void showName(字符串名称)
{
在这里我看不到任何MVC。现在你几乎看不到任何MVC。桌面GUI框架很久以来就将视图和控制器结合在一起,web UI的工作方式也完全不同。问问你自己,你将如何交换控制器。一个负责绘制按钮和接收点击的按钮类ents已经违反了MVC。MVC已经成为历史。你应该从中吸取的一个原则是内容和UI的分离。对不起,IDK关于MVC和其他东西,比如它与“按钮类”的关系.我们正在接受培训,这是我们第一次学习MVC。我们被告知,在MVC中,我们在模型类中编写所有业务逻辑,在视图类中编写UI,并使用控制器对它们进行管理。根据我们的需求和理解,我们提出了这两个版本的代码,根据我们的说法,这两个版本的代码正在实现MVC cuz db操作因此,如果你能提供查询的答案或者代码错误,比用C++实现MVC的一些示例代码,这将是很大的帮助。
*********** //version 1 ****************
class model
{
int rollNO; string name;
public:
void saveToDataBase()
{
name=//save to data base
rollNo=//save to data base
}
void fetchFromDataBase()
{
name=//get from data base
rollNo=//get from data base
}
};
class controller
{
model m, *pm;
view v;
v.getData(*pm);
pm->saveToDataBase();
m.fetchFromDataBase();
v.showData(m);
};
class view
{
getData(model *pm)
{
cin>>pm->rollNo;
cin>>pm->name;
}
showData(model m)
{
cout<<m.rollNo;
cout<<m.name;
}
};
***************** //version 2 **************************
class model
{
int rollNO; string name;
public:
void saveToDataBase()
{
name=//save to data base
rollNo=//save to data base
}
void fetchFromDataBase()
{
name=//get from data base
rollNo=//get from data base
}
};
class controller
{
model m1,m2;
view v;
m1.name=v.getName();
m1.rollNo=v.getRollNo();
m1.saveToDataBase();
m2.fetchFromDataBase();
v.showName(m2.name);
v.showRollNo(m2.rollNo);
};
class view
{
void getName()
{
cin>>name;
return name;
}
void getRollNo()
{
cin>>rollNo;
retun rollNo;
}
void showName(string name)
{
cout<<name;
}
void showRollNo(int rollNo)
{
cout<<rollNo;
}
};