MVC是架构模式,而不是设计模式
? ? ? 最早學(xué)編程的時候看過一些書,印象深刻的一本書《設(shè)計模式解析》,那本書給我后來的工作提供了很大的幫助。
他叫我站在問題模型的立場上指定解決方法,也教會了我軟件設(shè)計中每個問題都可以細(xì)化到到不可再分割的原子性。
在那書以后看到過一些設(shè)計模式的書出現(xiàn)。由于本人比較崇尚于權(quán)威或者說正統(tǒng)性的學(xué)術(shù)性書籍,沒怎么看其他本書。
最近一些年在網(wǎng)上看到過一些博客中把MVC說成設(shè)計模式,這個說法是錯誤的,MVC實際是軟件架構(gòu)模式。
筆者可以毫不客氣的說,工作幾年以后,有一些人說MVC是設(shè)計模式,基本上是濫竽充數(shù)的程序員。
因為mvc并沒有設(shè)計模式中那種問題場景原型,他是一個軟件架構(gòu)的泛化思想模型,比如工廠模式他可以解決需求更新時頻繁
維護方法代碼,只要傳入?yún)?shù),他就給你對象,比如java中的用class.forname來裝載類。
? ? 筆者讀書不多,對于MVC的粗淺理解如下,供大家參考:
? ? MVC是一種軟件架構(gòu)模式,他模擬人類社會分工,通過分工協(xié)作來完成一件事,完成這件事可能需要很多種工種,這里我們可以把
這些工作按角色來理解,理解成軟件中的各個層。
? ? 比如一個工程項目,公司老板安排設(shè)計人員去做標(biāo)書,標(biāo)書做完投標(biāo),然后把工程轉(zhuǎn)給技術(shù)部項目經(jīng)理,項目經(jīng)理安排技術(shù)人員去安裝,
技術(shù)人員安裝好以后反饋給項目經(jīng)理,項目經(jīng)理向老板匯報這個標(biāo)已經(jīng)完成,至此一個項目結(jié)束。
? ? 這個流程中:安排、轉(zhuǎn)、匯報幾個詞語大概反應(yīng)了一個完整項目中各個角色之間交互的特點,即任務(wù)調(diào)度及分發(fā),以及
任務(wù)結(jié)果反饋。
一個項目中如果用到了mvc架構(gòu)模式,不管項目大小,按群體/角色/職責(zé)分工大概有Model層,Controller層,View層。
Model可以理解為基層,做一些苦力,基礎(chǔ)性的工作。
Controller可以理解為管理層,他們通常負(fù)責(zé)下發(fā)命令、調(diào)度任務(wù)
View層可以理解為用戶界面及用戶交互層。
?
我們剛剛舉例的工程項目中:老板、項目經(jīng)理他們是Controller層,一個是下發(fā)命令,一個調(diào)度任務(wù)
其中設(shè)計部角色 以及技術(shù)人員他們是Model層,他們是做基礎(chǔ)工作的,他們這一層有一些粗糙的接口,可以和其他角色的人
來交流反饋任務(wù)結(jié)果。
篇博客臨時有點想法,算是吐槽,關(guān)于View層筆者沒有想到詳細(xì)的描述方式。
?
在軟件MVC架構(gòu)中,我們的Model,View,Controller層大家都能劃分清楚吧,網(wǎng)上教程很多。
筆者的理解是,不管項目中有沒有MVC框架,合理的MVC框架設(shè)計應(yīng)該遵循以下原則:
M層數(shù)據(jù)持久層,負(fù)責(zé)與數(shù)據(jù)庫通信,這一層包含數(shù)據(jù)模型實體類,以及一些CRUD方法。
C層主要負(fù)責(zé)調(diào)度任務(wù),得到V層需求下發(fā)命令,最多出現(xiàn)的應(yīng)該是把任務(wù)轉(zhuǎn)發(fā)給其他類處理。
例如
? DataStoreBLL dbll = new DataStoreBLL();
?dbll.doSave(Entity entity){
? ? DataStoreDAL dbal = new DataStoreDAL();
? ? ?dbal.doSave(entity);
}
實際數(shù)據(jù)持久化任務(wù)通過BLL轉(zhuǎn)發(fā)給DAL來處理,BLL只得到處理結(jié)果。
C層不應(yīng)該出現(xiàn)數(shù)據(jù)庫操作代碼,例如jdbc的getConnection
View層負(fù)責(zé)與用戶交互,展示處理結(jié)果給用戶看,可以是web ui,cui,gui,app ui等
各個層之間通信應(yīng)依賴于抽象(接口或者抽象類)。
??
轉(zhuǎn)載于:https://www.cnblogs.com/passedbylove/p/9191554.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的MVC是架构模式,而不是设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 福州男生祖孙三代全上清华 网友:羡慕到不
 - 下一篇: 怎么取消建设银行的短信服务费?教你轻松取