C++ MVC:命令行应用中实现的难点
我正在写一个小纸牌游戏,我被卡住了。 只是一些基本的: 1) 视图观察模型 2) 控制器决定何时显示输出窗口和何时显示输入窗口 3) 模型做所有的数学运算 嗯,看起来我的控制器必须是模型的观察者,这很糟糕,据我所知,也是错误的 我的情况是:有时用户必须做出选择并通过命令行进行确认C++ MVC:命令行应用中实现的难点,c++,model-view-controller,architecture,C++,Model View Controller,Architecture,我正在写一个小纸牌游戏,我被卡住了。 只是一些基本的: 1) 视图观察模型 2) 控制器决定何时显示输出窗口和何时显示输入窗口 3) 模型做所有的数学运算 嗯,看起来我的控制器必须是模型的观察者,这很糟糕,据我所知,也是错误的 我的情况是:有时用户必须做出选择并通过命令行进行确认 char View::getPlayersChoice { while ( cin>>choice ) { if ( choice == 'y' || choice == 'n' ) con
char View::getPlayersChoice
{
while ( cin>>choice )
{
if ( choice == 'y' || choice == 'n' )
controller.getPlayersChoice( choice )
else
cout<<"Invalid input. Please try again."
}
}
char视图::GetPlayerChoice
{
而(cin>>选择)
{
如果(选项='y'| |选项=='n')
controller.getPlayerChoice(选项)
其他的
cout在实现严格的MVC或MVC live Architectural模式时可以使用的工作流程是:
- 该视图查询控制器
- 控制器要求模型进行一些处理
- 控制器通知视图
由于视图知道控制器,但事实并非如此,因此我使用subject/observer模式实现从控制器到视图的通信
因此,你有:
class View
{
void doSomething()
{
controller.requestDoSomething();
}
void onProcessingSuccessEvent()
{
// do stuff (for example read model)
}
};
class Controller
{
void requestDoSomething()
{
model.process();
...
notify(ProcessingSuccessEvent);
}
}
我希望这能帮助你解决你的问题
致以最良好的祝愿,如果(选择=='y'| |'n')
没有做你认为它会做的事情!哇,谢谢你指出这一点,我会更新我的帖子。