日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

MVC是架构模式,而不是设计模式

發(fā)布時(shí)間:2023/12/13 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MVC是架构模式,而不是设计模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? 最早學(xué)編程的時(shí)候看過一些書,印象深刻的一本書《設(shè)計(jì)模式解析》,那本書給我后來的工作提供了很大的幫助。

他叫我站在問題模型的立場(chǎng)上指定解決方法,也教會(huì)了我軟件設(shè)計(jì)中每個(gè)問題都可以細(xì)化到到不可再分割的原子性。

在那書以后看到過一些設(shè)計(jì)模式的書出現(xiàn)。由于本人比較崇尚于權(quán)威或者說正統(tǒng)性的學(xué)術(shù)性書籍,沒怎么看其他本書。

最近一些年在網(wǎng)上看到過一些博客中把MVC說成設(shè)計(jì)模式,這個(gè)說法是錯(cuò)誤的,MVC實(shí)際是軟件架構(gòu)模式。

筆者可以毫不客氣的說,工作幾年以后,有一些人說MVC是設(shè)計(jì)模式,基本上是濫竽充數(shù)的程序員

因?yàn)閙vc并沒有設(shè)計(jì)模式中那種問題場(chǎng)景原型,他是一個(gè)軟件架構(gòu)的泛化思想模型,比如工廠模式他可以解決需求更新時(shí)頻繁

維護(hù)方法代碼,只要傳入?yún)?shù),他就給你對(duì)象,比如java中的用class.forname來裝載類。

? ? 筆者讀書不多,對(duì)于MVC的粗淺理解如下,供大家參考:

? ? MVC是一種軟件架構(gòu)模式,他模擬人類社會(huì)分工,通過分工協(xié)作來完成一件事,完成這件事可能需要很多種工種,這里我們可以把

這些工作按角色來理解,理解成軟件中的各個(gè)層。

? ? 比如一個(gè)工程項(xiàng)目,公司老板安排設(shè)計(jì)人員去做標(biāo)書,標(biāo)書做完投標(biāo),然后把工程轉(zhuǎn)給技術(shù)部項(xiàng)目經(jīng)理,項(xiàng)目經(jīng)理安排技術(shù)人員去安裝,

技術(shù)人員安裝好以后反饋給項(xiàng)目經(jīng)理,項(xiàng)目經(jīng)理向老板匯報(bào)這個(gè)標(biāo)已經(jīng)完成,至此一個(gè)項(xiàng)目結(jié)束。

? ? 這個(gè)流程中:安排、轉(zhuǎn)、匯報(bào)幾個(gè)詞語大概反應(yīng)了一個(gè)完整項(xiàng)目中各個(gè)角色之間交互的特點(diǎn),即任務(wù)調(diào)度及分發(fā),以及

任務(wù)結(jié)果反饋。

一個(gè)項(xiàng)目中如果用到了mvc架構(gòu)模式,不管項(xiàng)目大小,按群體/角色/職責(zé)分工大概有Model層,Controller層,View層。

Model可以理解為基層,做一些苦力,基礎(chǔ)性的工作。

Controller可以理解為管理層,他們通常負(fù)責(zé)下發(fā)命令、調(diào)度任務(wù)

View層可以理解為用戶界面及用戶交互層。

?

我們剛剛舉例的工程項(xiàng)目中:老板、項(xiàng)目經(jīng)理他們是Controller層,一個(gè)是下發(fā)命令,一個(gè)調(diào)度任務(wù)

其中設(shè)計(jì)部角色 以及技術(shù)人員他們是Model層,他們是做基礎(chǔ)工作的,他們這一層有一些粗糙的接口,可以和其他角色的人

來交流反饋任務(wù)結(jié)果。

篇博客臨時(shí)有點(diǎn)想法,算是吐槽,關(guān)于View層筆者沒有想到詳細(xì)的描述方式。

?

在軟件MVC架構(gòu)中,我們的Model,View,Controller層大家都能劃分清楚吧,網(wǎng)上教程很多。

筆者的理解是,不管項(xiàng)目中有沒有MVC框架,合理的MVC框架設(shè)計(jì)應(yīng)該遵循以下原則:

M層數(shù)據(jù)持久層,負(fù)責(zé)與數(shù)據(jù)庫通信,這一層包含數(shù)據(jù)模型實(shí)體類,以及一些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í)際數(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等

各個(gè)層之間通信應(yīng)依賴于抽象(接口或者抽象類)。

??

轉(zhuǎn)載于:https://www.cnblogs.com/passedbylove/p/9191554.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的MVC是架构模式,而不是设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。