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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

MVC架构模式(2)

發布時間:2023/12/10 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MVC架构模式(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介:

?????? MVC最初是在Smaltalk_80中被用來構建用戶界面的。M代表模型Model,V代表視圖View,C代表控制器Controller。

?????? Model模型層,可以簡單理解就是數據層,用于提供數據。在項目中,(簡單理解)一般把數據訪問和操作,比如將對象關系映射這樣的代碼作為Model層,也就是對數據庫的操作這一些列的代碼作為Model層。比如代碼中我們會寫DAO類型的代碼,這個DAO可以理解為是屬于Model層的代碼。

?????? View視圖層,就是UI界面,功能是與用戶進行交互。一般所有的JSP、Html等頁面就是View層。

?????? Controller控制層,Controller層的功能就是將Model和View層進行關聯。比如View主要是顯示數據的,但是數據又需要Model去訪問,這樣的話,View會先告訴Controller,然后Controller再告訴Model,Model請求完數據之后,再告訴View。

?

??????

?

  MVC重要特點就是兩種分離:

  視圖和數據模型的分離:使用不同的視圖對相同的數據進行展示;分離可視和不可視的組件,能夠對模型進行獨立測試。因為分離了可視組件減少了外部依賴利于測試。(數據庫也是一種外部組件)

  視圖和表現邏輯(Controller)的分離:Controller是一個表現邏輯的組件,并非一個業務邏輯組件。MVC可以作為表現模式也可以作為建構模式,意味這Controller也可以是業務邏輯。分離邏輯和具體展示,能夠對邏輯進行獨立測試。

  優點:耦合性低;重用性高;生命周期成本低;部署塊;可維護性高;有利軟件工程化管理。

  缺點:沒有明確的定義;不適合小型,中等規模的應用程序;增加系統結構和實現的復用性;視圖與控制器間的過于緊密的連接;視圖對模型數據的低效率訪問;一般高級的界面工具或構造器不支持模式。

?

適用場景:

?????? MVC 可以說是最經典的架構模式,它適用于大部分的開發場景,如果對架構不怎么了解,在MVC架構基礎上進行封裝與優化可以滿足絕大部分的需求

?

解決的問題:

?????? 實現一種動態的程序設計,是后序對程序的修改和擴展簡化,并且使程序某一部分的重復利用稱為可能。

  通過對復雜度的簡化,使程序結構更加直觀。

  將信息的內部表示與信息的呈現方式分離開來,并接受用戶的請求。它分離了組件,并允許有效的代碼重用。即,將模型和視圖的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據你可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保模型和視圖的同步,一旦模型改變,視圖應該同步更新。

?????? 增加代碼的重用率,減少數據表達、數據描述和應用操作的耦合度。同時也使得軟件可維護性、可修復性、可擴展性,靈活性以及封裝性大大提高

?

解決方案:

  通過把職責、性質相近的成分歸結在一起,不相近的進行隔離,MVC將系統分解為模型、視圖、控制器三部分,每一部分都相對獨立,職責單一,在實現過程中可以專注于自身的核心邏輯。MVC是對系統復雜性的一種合理的梳理與切分,它的思想實質就是“關注點分離”。

?

實例:

?????? 應用于基于MVC架構模式的框架,常見的服務器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常見前端MVC框架:angularjs、reactjs、backbone;由MVC演化出了另外一些模式如:MVP、MVVM。

?????? 其實 Android 開發本身默認的就是一套 MVC 實現。

?????? View 層:Android 開發中的 xml 布局就是我們的 View 層,默認情況下也建議 View 都盡量用 xml 實現,當然對于一些復雜的就需要我們自定義 View 了,自定義 View 同樣也是屬于 View 層,只不過大多數時候還是 xml 布局用的最多。

?????? Controller 層:毫無疑問,Android 默認也給我們提供了 Controller,就是 Activity & Fragment,仔細想想,是不是用戶的交互事件,如輸入、點擊、滑動等都是在 Activity、Fragment 中處理的?關于這點有人認為 Activity & Fragment 屬于 View 層,這個我是不認可的,View 應該專注界面的顯示,Controller 處理用戶的交互,提供給 View 需要的數據,從而讓 View 正確的顯示出來,而這都是 Activity & Fragment 的工作。

?????? Model 層:Android 中對 View 與 Controller 有了定義,其實沒有對 Model 層做定義,而大部分架構都不會對 Model 層做定義,因為 Model 本身是跟業務相關,針對不同的業務模型,定義需要的數據模型與實體類,以及相關的業務邏輯處理,雖然 Android 沒有明確定義 Model 層,但是我們在開發中都會定義一個專門的 model ?package 用來統一管理所有的 model 文件,如 User、Order、Chat 等。

?????? 下面舉幾個簡單的例子:

  例如①,小時候玩的那種卡帶式游戲機,Control是主機,一般來說我買一個主機就行了,只要他不壞,他就能一直讓我玩這一類的游戲。View則是電視機和游戲手柄,電視機可以獨立工作,他不管輸入的是電視信號、影碟機信號還是游戲機信號,他只管顯示,而且他決定了我們看到的效果是怎么樣的,如果我想要個尺寸更大的或者彩色的顯示效果,我只需要買個相應的電視機就行了,手柄也是可以換的,遙桿還是帶震動的。Model則是游戲卡帶,他決定了我玩的是什么游戲,是魂斗羅還是超級瑪莉,而且游戲機主機和電視機生產廠家永遠也不知道在上面有可能會運行什么樣的游戲。卡帶中可能會有游戲代碼和存儲單元,都根據游戲的需要而設計。

  例如②,一個采用比例表示的用于政治選舉的一個簡單信息系統,它提供了一個輸入數據的電子數據表和表示當前結果的幾種圖標。用戶可以通過圖形接口與系統交互。所有信息顯示必須立即反應出選舉數據的變化。(引用自《面向模式的軟件體系結構-卷1 模式系統》)

  即,一旦模型的數據發生了變化,模型要通報所有的視圖。

?

MVC和三層架構的區別與聯系:

?????? 很多人都很容易把MVC和三層架構模式混淆,但其實兩者有很大的區別。

?????? 三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:

?????? 表現層(UI):展現給用戶的界面

?????? 業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理

?????? 數據訪問層(DAL)::該層所做事務直接操作數據庫,針對數據的增添、刪除、修改、更新、查找等

?????? 嚴格來說MVC(Model-View-Controller)三個加起來以后才是三層架構中的UI層,也就是說,MVC把三層架構中的UI層再度進行了分化,分成了控制器、視圖、實體三個部分,控制器完成頁面邏輯,通過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話。

?

  MVC是表現層的架構,MVC的Model實際上是ViewModel,即供View進行展示的數據。 ViewModel不包含業務邏輯,也不包含數據讀取。 而在N層架構中,一般還會有一個Model層,用來與數據庫的表相對應,也就是所謂ORM中的O。這個Model可能是POCO,也可能是包含一些驗證邏輯的實體類,一般也不包含數據讀取。進行數據讀取的是數據訪問層。而作為UI層的MVC一般不直接操作數據訪問層,中間會有一個業務邏輯層封裝業務邏輯、調用數據訪問層。UI層(Controller)通過業務邏輯層來得到數據(Model),并進行封裝(ViewModel),然后選擇相應的View

?

轉載于:https://www.cnblogs.com/ghs1065248758/p/9099093.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。