首页 > 代码库 > 设计模式二:MVC
设计模式二:MVC
先附上部分代码:
/* *MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 *Model(模型) - 模型代表一个存取数据的对象,它也可以带有逻辑,在数据变化时更新控制器。 *View(视图) - 视图代表模型包含的数据的可视化。 *Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。 */ #include "stdafx.h" #include<iostream> #include<string> #include<vector> using namespace std; class View; class Model; class Controller { public: Controller(Model* model,View* view) { this->model=model; this->view=view; } virtual string get_model_msg()=0; virtual void set_model_msg(string msg)=0; virtual void update()=0; protected: Model* model; View* view; }; class Model { public: virtual string getmsg()=0; virtual void setmsg(string msg)=0; protected: string msg; }; class Msg:public Model { public: string getmsg() { return msg; } void setmsg(string msg) { this->msg=msg; } }; class View { public: void show_msg(Controller* co) { cout<<co->get_model_msg()<<endl; } }; class Manager:public Controller { public: Manager(Model* model,View* view):Controller(model,view){} string get_model_msg() { return model->getmsg(); } void set_model_msg(string msg) { model->setmsg(msg); } void update() { view->show_msg(this); } };
解释一下,不用按照我这种声明抽象类的方法,我只是单纯的为了使用纯虚函数(因为之前的文章说了纯虚函数,采纳SoftwareTeacher给我提的建议,这次用一下。),顺便补充一下纯虚函数的一些注意事项:
纯虚函数声明时的返回值和参数 在子类实现的时候是不能改变的,否则认为没有实现这个纯虚函数,也就是说 实现纯虚函数: 参数,返回值必须保持一致。
我也是初学MVC 说下我的理解:
Model和View受Controller的控制,且每层相互独立,层之间不必关心每层到底是怎样实现的;比如说:开发View的时候你仅仅需要考虑的是如何布局好一个界面,开发Model的时候仅仅要考虑业务逻辑和数据维护,能使开发者专注于某一方面的开发。
附上主函数:
int _tmain(int argc, _TCHAR* argv[]) { char opt; Msg* msger=new Msg; View* view=new View; Manager manager(msger,view); while(true) { string tempmsg; cout<<"please input a number"<<endl; cin>>opt; switch(opt) { case ‘1‘: cout<<"please input the change msg"<<endl; cin>>tempmsg; manager.set_model_msg(tempmsg); // 通过Controller来改变Model break; case ‘2‘: manager.update(); //通过Controller来显示View break; default: exit(0); break; } } return 0; }
如果有说错的地方欢迎批评指正
设计模式二:MVC
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。