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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

設計模式之王 - MVC

發(fā)布時(shí)間:2025/3/21 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 設計模式之王 - MVC 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Model-View-Controller?(縮寫 MVC ) 是 Cocoa 框架的一部分,並且毋庸置疑是最常用的設(shè)計(jì)模式之一。它可以幫你把物件根據(jù)職責(zé)進(jìn)行劃分和歸類。

作為劃分依據(jù)的三個(gè)基本職責(zé)是:

  • 模型層 (Model): 存儲(chǔ)數(shù)據(jù)並且定義如何操作這些數(shù)據(jù)。在我們的例子中,就是?PhotoVO?類別。
  • 視圖層 (View) : 負(fù)責(zé)模型層的顯示,並且負(fù)責(zé)用戶的互動(dòng),一般來說都是繼承自?UIView?這個(gè)父類別。在我們的項(xiàng)目中就是?PhotoView?這個(gè)類。
  • 控制器 (Controller): 控制器是整個(gè)系統(tǒng)的掌控者,它連接了模型層和數(shù)據(jù)層,並且把數(shù)據(jù)在視圖層展示出來,監(jiān)聽各種事件,負(fù)責(zé)數(shù)據(jù)的各種操作。

在我們的專案中哪個(gè)是控制器?MainViewController?這個(gè)類別就是。

如果你的項(xiàng)目遵循 MVC 的設(shè)計(jì)模式,那麼各種對(duì)象要不是 Model ,要不是 View ,要不就是 Controller。

當(dāng)然在實(shí)際的開發(fā)中也可以靈活變化,其實(shí)到目前為止,大家無論是練習(xí)甚至實(shí)際開發(fā),只聽過 MVC ,卻不一定會(huì)完全遵守。

三者之間的關(guān)係如下:

模型層通知控制器層任何數(shù)據(jù)的變化,然後控制器層會(huì)刷新視圖層中的數(shù)據(jù)。視圖層可以通知控制器層用戶的交互事件,然後控制器會(huì)處理各種事件以及刷新數(shù)據(jù)。

你可能會(huì)感覺奇怪:為什麼要把這三個(gè)東西分開來,而不能放在一個(gè)類別裡呢?那樣似乎更簡(jiǎn)單一點(diǎn)嘛。

筆者之所以這樣做,是為了讓程式碼可以有更好的分離和重用。理想狀態(tài)下,視圖層應(yīng)當(dāng)和模型層完全分離,又稱為鬆耦合。如果視圖層不依賴任何模型層的具體實(shí)現(xiàn),那麼就可以很容易的被其他模型重複使用,用來展示不同的數(shù)據(jù)。

舉個(gè)例子,比如在未來我們需要添加電影照片或者什麼書籍封面,我們依舊可以使用?PhotoView?這個(gè)類作為展示。

更久遠(yuǎn)點(diǎn)來說,在以後如果你建立了一個(gè)新的專案並且需要用到和圖片相關(guān)的內(nèi)容,你可以直接用?PhotoView?類別,因?yàn)樗鼇K不依賴於任何視圖模組。這就是 MVC 的強(qiáng)大之處,三大元素,各司其職,降低全部程式碼的耦合性。


from:https://wildenchen.gitbooks.io/swift-design-patterns/content/Chapter03/MVC.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的設計模式之王 - MVC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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