標籤:space date input end 分代 參數 microsoft 取數 prot
先附上部分代碼:
/**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