MVC架構思想簡介
來自專欄跟小豆君學Qt14 人贊了文章
作為程序員,也許MVC架構是我們最常聽到的術語之一。所謂MVC是Model View Controller的縮寫,意即模型-視圖-控制器。
也許直接從字面上來理解還是會感到有些模糊,大家不要著急,請先跟我看一個例子,相信在看完例子之後,你會對MVC有個比較整體的認識。
1 word圖表例子
在大家電腦都裝有word軟體吧
1.1 打開word,選擇:插入=》圖表=》柱狀圖=》簇狀柱狀圖,確定。
1.2 點擊確定後,會生成一個柱狀圖圖表
上方是柱狀圖數據表格,下方是柱狀圖,柱狀圖準確的反映了表格數據。
1.3 然後點擊選中整個柱狀圖,右鍵選擇更改圖表類型=》折線圖
1.4 我們比較一下柱狀圖和折線圖,其實,它們所對應的數據並沒有改變,真正改變的是數據的表現形式,即柱狀圖和折線圖,並且,當修改excel中的數據時,統計圖會隨著數據而改變。數據是唯一的,而數據可以用柱狀圖,折線圖等形式來展現。
所以,我們把excel中的數據類比於模型,柱狀圖,折線圖類比於視圖,而將excel這樣的編輯數據的工具類比於控制器,即模型-視圖-控制器,模型是數據,視圖是數據的展現方式,控制器負責模型和視圖之間的交互。
小豆君剛剛舉的是word中的例子,其實,在我們的生活中這樣的例子也比比皆是。
例如,各種手機app,經常讓用戶更新版本,當打開新版本時,往往會看到一個更新穎,人性化,便捷的用戶界面,而用戶的資料信息,關注信息等都保持改變,只是數據的展示方式被改變了。講到這裡,我想大家對MVC也有了個整體的認識了吧。
2 數據唯一性
我們都知道,計算機最主要的功能就是儲存數據和計算數據。而計算機中的數據就是0和1,因為計算機只認識0,1。它並不能像人一樣可以認識十進位數,認識很多不同的事物,但是人卻不認識0和1,或者說很難讀懂0和1表示的事物。這是人和計算機最大的差別之一。
然而,計算機是要為人類服務的,它必須將它所認識的0和1轉化成人類所熟知的數字,字元,圖表等具體表象。這些表象能夠形象的,或者說更加直觀的為研究人員提供線索或是某種規律。
例如,我可以通過公眾號後台查看到粉絲在全國的分布情況,或是男女比例,手機型號等數據。
如果公眾號關聯了兩份不同的數據,在全國各地的粉絲總共1000人,而男女總和是900(850+50),那從我的角度來看,我該選擇相信哪條數據。所以公眾號的數據分析功能也就失去了意義,數據的可信度也會大打折扣。
同理,在軟體開發中,如果你界面顯示了兩份數據,即使你很小心的維護著兩份或多份數據保持同步,無論是存在緩存,文件或資料庫中,但你也無法保證數據會時刻保持同步(例如,設計好的兩張表中保存了同一份兒數據,當一張表的數據被更新,而另一張表卻忘記更新),而且這種情況對於初學者來說也是時有發生。
所以保持數據的唯一性是一個非常重要的話題,而MVC就是這樣的一個解決方案,讓數據和展示數據的界面相分離,所有數據的更改就通過控制器來實現。
數據的唯一性這一標準大家一定要深深地刻在腦海中,無論你是使用MVC架構,C++中的const,設計模式中的單例模式等,都是用來保持數據唯一的有效手段,如果你能把這一標準保持好,我想你將會受益無窮。
好的,關於MVC的簡單介紹就到這裡了,下節小豆君將分享Qt中的MVC架構,幫大家理清MVC的來龍去脈,敬請期待吧!
更多分享請關注微信公眾號:小豆君Qt分享,只要關注,便可加入C++Qt交流群,一起學習
推薦閱讀: