MVC模式

模型-視圖-控制器模型

MVC不僅是一種實(shí)現(xiàn)用戶界面的軟件模式饵较,同時(shí)也是一種易于修改和維護(hù)的架構(gòu)竹观。MVC模式將應(yīng)用程序分為3個(gè)基本部分:模型镐捧、視圖和控制器。這3個(gè)部分使相互關(guān)聯(lián)的臭增,并且有助于將信息的處理與信息的呈現(xiàn)分離開來懂酱。

MVC模式的工作機(jī)制為:模型提供數(shù)據(jù)和業(yè)務(wù)邏輯,視圖負(fù)責(zé)數(shù)據(jù)的展示誊抛,而控制器是兩者之間的粘合劑列牺,根據(jù)用戶要求的呈現(xiàn)方式來協(xié)調(diào)模型和視圖。有趣的是拗窃,視圖和控制器依賴于模型瞎领,而不是反過來泌辫。這主要是因?yàn)橛脩羲P(guān)心的是數(shù)據(jù)。模型是可以獨(dú)立工作的九默,這是MVC模式的關(guān)鍵所在震放。

MVC模式的主要意圖如下:

1、將數(shù)據(jù)和數(shù)據(jù)的展示隔離開來

2驼修、使類的維護(hù)和實(shí)現(xiàn)更加簡單

3殿遂、靈活地改變數(shù)據(jù)的存儲和顯示方式。兩者都是獨(dú)立的乙各,因此可以靈活修改墨礁。

模型
模型是應(yīng)用程序的基石,因?yàn)樗仟?dú)立于視圖和控制器觅丰,而視圖和控制器則依賴于模型

模型還提供客戶端請求的數(shù)據(jù)。通常妨退,在應(yīng)用程序中妇萄,模型有存儲和返回信息的數(shù)據(jù)庫來表示。模型會提供狀態(tài)以及改變狀態(tài)的方法咬荷,但他不知道數(shù)據(jù)是如何展示給客戶端的冠句。

模型必須在多個(gè)操作中保持一致;否則幸乒,客戶端可能會損壞或展示過時(shí)的數(shù)據(jù)懦底,這是無法容忍的。

由于模型是完全獨(dú)立的罕扎,所以聚唐,開發(fā)模型的人員可以專注于維護(hù)模型的本身,而無需關(guān)注視圖的最新變化

視圖
視圖用來將數(shù)據(jù)展示在接口上腔召,供客戶查看杆查。視圖可以獨(dú)立開發(fā),但不應(yīng)該包含任何負(fù)責(zé)的邏輯臀蛛,因?yàn)檫壿嫅?yīng)該放在控制器或模型中憎夷。

在當(dāng)今世界中别瞭,視圖需要足夠的靈活,并且應(yīng)該適應(yīng)多種平臺。

視圖應(yīng)避免與數(shù)據(jù)庫直接交互饮焦,而是依靠模型來獲取所需的數(shù)據(jù)

控制器
控制器,顧名思義遍膜,就是控制用戶在界面上的交互。當(dāng)用戶點(diǎn)擊界面上的某些元素時(shí)鼠锈,基于對應(yīng)的交互,控制器調(diào)用相應(yīng)的模型茎刚,然后模型完成創(chuàng)建、更新或刪除數(shù)據(jù)等動作筝闹。

控制器還能將數(shù)據(jù)傳遞給視圖,以便將信息呈現(xiàn)在接口上界睁,供用戶查看嘹履。

控制器不應(yīng)該進(jìn)行數(shù)據(jù)庫調(diào)用或參與數(shù)據(jù)的展示幼苛』拦危控制器應(yīng)該作為模型和視圖之間的粘合劑舶沿。

下面用Python實(shí)現(xiàn)一個(gè)MVC設(shè)計(jì)模式。假設(shè)我們相要開發(fā)一個(gè)應(yīng)用程序配并,告訴用戶云公司所提供的營銷服務(wù)括荡,包括的電子郵件、短信和語音設(shè)施溉旋。

我們首先開發(fā)model類(模型)畸冲,定義產(chǎn)品提供的服務(wù)和費(fèi)用;

然后定義view類(視圖)观腊,它提供了將信息反饋給客戶端的方法邑闲;

接下來,定義Controller類恕沫,這個(gè)類定義了兩個(gè)方法监憎,即get_services()和get_pricing()纱意。這兩個(gè)方法都是用來查詢模型并獲取數(shù)據(jù)的婶溯,然后將數(shù)據(jù)饋送到視圖,從而展示給用戶偷霉;

Client類將實(shí)例化控制器迄委,然后控制器對象就會根據(jù)客戶端的請求來調(diào)用適當(dāng)?shù)姆椒ǎ?br> ————————————————
版權(quán)聲明:本文為CSDN博主「shizhengju」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議类少,轉(zhuǎn)載請附上原文出處鏈接及本聲明叙身。
原文鏈接:https://blog.csdn.net/aafeiyang/article/details/105819330

class Model(object):
   services = {
       'email': {'number': 1000, 'price': 2},
       'sms': {'number': 1000, 'price': 10},
       'voice': {'number': 1000, 'price': 15},
   }


class View(object):
   def list_services(self, services):
       for svc in services:
           print(svc, " ")

   def list_pricing(self, services):
       for svc in services:
           print("For", Model.services[svc]['number'],
                 svc, "message you pay $",
                 Model.services[svc]['price'])


class Controller(object):
   def __init__(self):
       self.model = Model()
       self.view = View()

   def get_services(self):
       services = self.model.services.keys()
       return self.view.list_services(services)

   def get_pricing(self):
       services = self.model.services.keys()
       return self.view.list_pricing(services)


class Client(object):
   con = Controller()
   print("Services Provided:")
   con.get_services()
   print("Pricing for Services:")
   con.get_pricing()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市硫狞,隨后出現(xiàn)的幾起案子信轿,更是在濱河造成了極大的恐慌,老刑警劉巖残吩,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件财忽,死亡現(xiàn)場離奇詭異,居然都是意外死亡泣侮,警方通過查閱死者的電腦和手機(jī)即彪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來活尊,“玉大人隶校,你說我怎么就攤上這事漏益。” “怎么了深胳?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵绰疤,是天一觀的道長。 經(jīng)常有香客問我稠屠,道長峦睡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任权埠,我火速辦了婚禮榨了,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘攘蔽。我一直安慰自己龙屉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布满俗。 她就那樣靜靜地躺著转捕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唆垃。 梳的紋絲不亂的頭發(fā)上五芝,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音辕万,去河邊找鬼枢步。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渐尿,可吹牛的內(nèi)容都是我干的醉途。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼砖茸,長吁一口氣:“原來是場噩夢啊……” “哼隘擎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凉夯,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤货葬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后劲够,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體震桶,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年再沧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尼夺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖淤堵,靈堂內(nèi)的尸體忽然破棺而出寝衫,到底是詐尸還是另有隱情,我是刑警寧澤拐邪,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布慰毅,位于F島的核電站,受9級特大地震影響扎阶,放射性物質(zhì)發(fā)生泄漏汹胃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一东臀、第九天 我趴在偏房一處隱蔽的房頂上張望着饥。 院中可真熱鬧,春花似錦惰赋、人聲如沸宰掉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轨奄。三九已至,卻和暖如春拒炎,著一層夾襖步出監(jiān)牢的瞬間挪拟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工击你, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玉组,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓果漾,卻偏偏與公主長得像球切,于是被迫代替她去往敵國和親谷誓。 傳聞我的和親對象是個(gè)殘疾皇子绒障,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容