MVC面向?qū)ο蟮木幊趟季S
接觸編程已經(jīng)有些日子了无埃,說實在的一直在進行過程化編程。之前學(xué)習(xí)過一些語言,因為沒有實際操作經(jīng)驗,思維上一直停留在一個過程化編程的層面上卿拴,這里拋出一個過程化編程的概念赤惊,其實用大家都能理解的“炒菜”來舉個例子吼旧。
用過程化思維來炒菜,我們要進行洗菜未舟,切菜圈暗,點火,燒油裕膀,炒菜员串,盛菜。
這一系列操作都可以叫做過程昼扛。而這一系列操作過程中又有很細致的流程寸齐,所以如果改變其中任何一條操作都是非常難的。但是這也是我們做事大部分采用的方式。
如果我們用面向?qū)ο蟮姆椒▉沓床嗣祓校紫任覀兪紫让鎸Φ氖菍ο笕欧ǎ@個炒菜里,菜是對象毅厚,刀是對象迹恐,火是對象,鍋是對象卧斟,盤子也是對象殴边。面對這些我們來炒菜就很方便。因為核心業(yè)務(wù)是炒菜珍语。所以锤岸,所謂的面向?qū)ο缶褪侵灰羞@些對象我們就可以炒菜不用過多的考慮炒菜的細節(jié)有多少。例如:菜我們可以買現(xiàn)成的板乙,甚至可以不用菜是偷,我們直接用肉。刀也一樣募逞,我們也可以不用蛋铆,菜用撕的也可以。所以這就是面向?qū)ο蟆?/p>
現(xiàn)在用些概念來解釋一下什么是MVC面向?qū)ο蟮木幊趟枷敕沤印H荕odel View Controller刺啦,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計典范纠脾,用一種業(yè)務(wù)邏輯玛瘸、數(shù)據(jù)、界面顯示分離的方法組織代碼苟蹈,將業(yè)務(wù)邏輯聚集到一個部件里面糊渊,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯慧脱。MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入渺绒、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中。
以上是百度COPY的一些內(nèi)容菱鸥,這些對于理解什么是MVC來說還是很官方化宗兼。我就用通俗的語來解釋上面那些人不太好理解的話。
這里我需要來還原一下我們現(xiàn)實的情況,現(xiàn)實工作和開發(fā)環(huán)境中采缚,我們對于軟件的開發(fā)的需求就是如何保證軟件的穩(wěn)定针炉,高效挠他,安全和可擴展性扳抽。之前我用炒菜來解釋了一下面向過程的編程,我們需要從軟件啟動到結(jié)束設(shè)計一整套完善的流程。程序一但成型我們對程序的代碼進行修改就會很困難贸呢,因為我們的軟件是一套完整的邏輯系統(tǒng)镰烧,新加入的功能或許需要重新設(shè)計邏輯處理。即使不是修改楞陷,單純的擴展性也一樣怔鳖。最近我做的學(xué)生信息管理系統(tǒng)就是這樣一個面向過程的軟件,雖然只有二三百行代碼固蛾,但是從中加入一些功能直接報錯结执。但是如果是先搞定頁面,再搞定各種功能艾凯,最后將各種功能連接起來献幔,這就是MVC面向?qū)ο蟮木幊獭H绻覀冃枰o頁面擴展甚至是變更趾诗,我們就修改頁面蜡感。如果我們是要添加一些功能,在功能里做添加即可恃泪。而上述的過程就是面向?qū)ο笾P恕6嫦驅(qū)ο笠灿泻芏嗬诔绦蚍€(wěn)定安全的地方。程序都是給人用的贝乎,但是人在使用的過程中難免會出現(xiàn)一些錯誤的操作情连,而這些錯誤的操作如果沒有相應(yīng)的邏輯判斷的話很有可能造成程序的出錯,而面向?qū)ο笥脩糁苯油ㄟ^界面來獲取相應(yīng)的內(nèi)容和操作方法览效,而控制器來接收和處理用戶的操作蒙具,核心的功能部分由控制器發(fā)出指令后進行相應(yīng)的調(diào)取。這樣即大大的提高了程序的穩(wěn)定性和安全性朽肥。
談了這么多面向過程以及面向?qū)ο蟮木幊趟季S禁筏,最后我想說一下有關(guān)程序運行效率的問題,雖然不類屬MVC畢竟還是有些關(guān)聯(lián)所以一并談?wù)劇?br> 如果之前說的面向?qū)ο蟮木幊逃锌墒钩绦蚍€(wěn)定衡招、安全方便擴展和修改等優(yōu)點那么我們自然就要考慮到這么多優(yōu)點它的代價是怎樣的篱昔。它設(shè)計出來的程序效率方面怎樣。
之前我談過計算機內(nèi)的一些硬件始腾,這里我們需要知道CPU是用來計算的州刽,內(nèi)存是用來存儲數(shù)據(jù)的。無論是什么數(shù)據(jù)都是先用內(nèi)存存起來用CPU來計算浪箭,所以穗椅,面向?qū)ο蟮木幊檀蟛糠质峭ㄟ^方法之間的調(diào)用來實現(xiàn)業(yè)務(wù)需求的,也就是存數(shù)據(jù)的時候相對少些更多的是用來計算處理數(shù)據(jù)奶栖。這里值得一提的是程序也是人來設(shè)計并編寫的匹表,如果大部分計算是由我們?nèi)藖磉M行的話也是相當(dāng)消耗人力資源的门坷。雖然我談到了程序的資源消耗,但是這只是在程序設(shè)計時對物理資源的一種參考方面袍镀。就好比有些游戲?qū)τ布呐渲糜幸恍┮竽觯覀儗懙某绦蚰茉谑裁礃拥挠布线\行我們至少要心里有數(shù),所以接下來面對一些商業(yè)項目的開發(fā)我們除了要了解的還有很多。