設計模式二:MVC

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.