在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

iOS開發幾個架構的對比

汽車玩家 ? 來源:IT知識課堂 ? 作者:IT知識課堂 ? 2020-05-05 23:17 ? 次閱讀

iOS開發中蘋果定義了一套MVC的軟件架構。前幾天,同事們聊起了MVC、MVP、MVVM等架構的區別。今天,我也來對此給出一些自己的理解。

MVC

基本MVC模式

如下圖所示為基本的MVC(Model-View-Controller)模式結構圖,可分為三部分:模型(Model)、視圖(View)、控制器(Controller)。其在MVC模式中所扮演的角色分別為:

Model:模型管理應用程序的數據,響應有關其狀態信息(通常來自View)的請求,并響應指令以更改狀態(通常來自Controller)。

View:視圖管理數據的展示。

Controller:控制器解釋用戶的輸入,并通知模型、視圖進行狀態更新。

iOS開發幾個架構的對比

其中,View和Controller依賴于Model,而Model并不依賴于View和Controller。這種設計模式的優點在于允許Model不受View的影響,從而能夠進行獨立的構建和測試。

此外,根據Model的具體實現還可以進一步分為:主動型Model、被動型Model。

被動型Model MVC模式

當只有一個Controller操控著Model時可以采用被動型Model。Controller定義Model,并在Model發生改變時通知View,后者再進行更新。在這種場景下,Model完全獨立于View和Controller。實際上,被動型Model MVC模式就是基本的MVC模式。

主動型Model MVC模式

當Model的狀態未受Controller干擾的情況下發生變化時,使用主動型Model。當其他來源正在更改數據并且必須立刻反應到View中時,可能會發生這種情況。

為了實現主動型Model,通常使用Observer模式來提供了一種機制來提醒其他對象的狀態變化,避免引入依賴關系。各個View實現Observer接口并向Model注冊。當Model發生變化時,Model會遍歷所有注冊的觀察者并通知他們相關的變化。這種方法通常被稱為“發布 - 訂閱”。Model從不需要關于任何View的任何信息。事實上,在Controller需要被告知Model變化的情況下(例如,啟用或禁用菜單選項),所有Controller必須通過實現Observer接口并訂閱Model的變化。

iOS開發幾個架構的對比

傳統版MVC

上述主動型Model MVC模式通過加入Observer模式進行了改良。事實上,隨著業務需求的變化,MVC模式通過不斷加入一些更基本的設計模式采演化成現在經典的MVC模式。這些基本模式協同工作,定義了MVC應用程序特有的功能分離和通信路徑。

iOS開發幾個架構的對比

上圖所示為傳統MVC設計模式,其通過Composition、Strategy、Observer等基本設計模式協同工作以實現。用戶操作在復合結構的某個層次上操作View,生成一個事件。Controller接收事件,并進行解釋。這個過程使用Strategy模式實現,可以是通過消息請求一個Model對象來更新其狀態或請求一個View對象來更新其行為或外觀。Model對象則在其狀態改變時通知所有已注冊為觀察者的對象。如果觀察者是對象,則可以相應更新其外觀。

蘋果版MVC

蘋果認為傳統的MVC模式中,View通過Observer模式直接觀察Model對象以獲取相關的通知,而這樣的設計會導致View和Model對象不能被廣泛復用,因為View與其觀察的Model之間存在耦合關系。因此,蘋果版MVC與傳統MVC基本一致,只是隔離了View和Model。

iOS開發幾個架構的對比

在iOS中,UIViewController和UIView是一一對應的。隨著業務的深入,MVC最終一點點變成了Massive-View-Controller。

iOS開發幾個架構的對比

MVP

MVP(Modell-View-Presenter)模式就是為了解決MVC中Controller越來越臃腫的問題,進一步明確代碼分工。MVP與蘋果版MVC非常相似,但是它們的從屬關系有所不同(實線表示持有)。如下圖所示,MVP模式中View持有Presenter,Presenter持有Model,View不能直接訪問Model;而MVC模式中Controller持有View和Model。

通過修改從屬關系,可以真正意義上實現將UI邏輯和數據邏輯隔離,而隔離之后就可以方便地對數據邏輯部分進行單元測試。

iOS開發幾個架構的對比

在iOS中,MVP的實現一般如下圖所示。

iOS開發幾個架構的對比

MVVM

MVVM(Model View View-Model)就是為了解決MVP中Presenter過于臃腫的問題。MVVM的思想是將Controller中UI控制邏輯與業務邏輯進行分離,并抽離出一個View-Model來完成UI控制的邏輯。而Controller只需要負責業務邏輯即可。如下圖便是MVVM的結構圖。

iOS開發幾個架構的對比

通常,View-Model可以調用Model定義的方法,從Model中獲取數據以用于View,并對數據進行預處理,使View可以直接使用。View又可以向View-Model發出用戶的操作命令,從而更改Model。MVVM實現了一種雙向綁定機制。

在iOS中,MVVM的實現一般如下圖所示。

iOS開發幾個架構的對比

MVVM的優點在于:降低了View和Model之間的耦合;分離了業務邏輯和視圖邏輯。缺點在于:View和Model雙向綁定導致bug難以定位,兩者中的任何一方出現問題,另一方也會出現問題;增加了膠水代碼。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • iOS
    iOS
    +關注

    關注

    8

    文章

    3396

    瀏覽量

    150831
  • 架構
    +關注

    關注

    1

    文章

    517

    瀏覽量

    25507
收藏 人收藏

    評論

    相關推薦

    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與開發對比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與開發對比
    的頭像 發表于 11-28 14:31 ?506次閱讀
    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與<b class='flag-5'>開發</b>板<b class='flag-5'>對比</b>

    Llama 3 模型與其他AI工具對比

    Llama 3模型與其他AI工具的對比可以從多個維度進行,包括但不限于技術架構、性能表現、應用場景、定制化能力、開源與成本等方面。以下是對Llama 3模型與其他一些主流AI工具的對比分析: 一
    的頭像 發表于 10-27 14:37 ?444次閱讀

    risc-v與esp32架構對比分析

    RISC-V與ESP32在架構上存在顯著的差異,這些差異主要體現在處理器類型、設計原則、功能特性以及應用場景等方面。以下是對兩者架構的詳細對比分析: 一、處理器類型與設計原則 RISC-V : 類型
    發表于 09-26 08:40

    IOS12以上搜索不到藍牙是怎么回事?

    現在是這樣的,IOS12以下測試能夠搜索到設備藍牙。但是IOS12以上就都搜索不到。 是什么原因呢?
    發表于 07-02 08:03

    配對過IOS13.5的手機無法連接刪除綁定信息的esp32藍牙,怎么解決?

    你好,我的IDF版本是4.1,手機是IOS13.5版本的,APP是nRF Connect。 當IOS手機配對連接esp32藍牙成功后,把esp32本地存儲的藍牙綁定信息刪除掉,IOS手機就沒辦法再次
    發表于 06-25 07:56

    全光網絡與傳統網絡架構對比分析

    隨著信息技術的飛速發展,網絡已經成為我們日常生活中不可或缺的一部分。在這個信息爆炸的時代,全光網絡和傳統網絡架構作為兩種主流的網絡技術,各有其特點和適用范圍。本文將對這兩種網絡架構進行詳細的對比
    的頭像 發表于 06-07 10:45 ?1383次閱讀
    全光網絡與傳統網絡<b class='flag-5'>架構</b>的<b class='flag-5'>對比</b>分析

    RISC-V的MCU與ARM對比

    RISC-V的MCU與ARM在多個方面存在顯著的區別,以下是兩者的對比: 開源與專有 RISC-V :RISC-V是一種開源的指令集架構(ISA),允許任何人免費使用、修改和貢獻RISC-V的指令集
    發表于 05-27 15:58

    鴻蒙ArkUI-X跨平臺開發:【bility開發說明(iOS端)】

    本文介紹將ArkUI框架擴展到iOS平臺所需要的必要類及其使用說明,開發者基于OpenHarmony,可復用大部分的應用代碼(生命周期等)并可以部署到iOS平臺,降低跨平臺應用開發成本
    的頭像 發表于 05-21 14:35 ?939次閱讀
    鴻蒙ArkUI-X跨平臺<b class='flag-5'>開發</b>:【bility<b class='flag-5'>開發</b>說明(<b class='flag-5'>iOS</b>端)】

    蘋果終止面向學生的“iOS開發者大學計劃”

    蘋果公司于近日宣布,終止了面向學生的“iOS開發者大學計劃”。該計劃自推出以來,一直為大學教授和合格講師提供機會,使他們能夠組建最多包含200名學生的開發團隊。學生們在這些團隊中,可以創建和測試應用程序,而無需支付常規的99美元
    的頭像 發表于 05-20 09:35 ?447次閱讀

    iOS 16.7.8 RC版上線,推薦注冊開發者計劃升級預覽版

    值得注意的是,自iOS/iPadOS 16.4開發者預覽版Beta 1起,須先注冊成為蘋果開發者,然后通過系統【設置】【軟件更新】查看升級選項。
    的頭像 發表于 05-08 11:30 ?2084次閱讀

    用stm32+esp8266做開發遇到的幾個疑問求解

    最近在用stm32+esp8266做開發,遇到問題,開發中遇到同類情況的,一起討論一下! 1、設備作為server建立熱點后,不管是什么終端(ios、安卓端、pc),很難找到該熱點;或者找到后
    發表于 04-29 06:59

    超融合架構解決方案

    的特點、與傳統架構對比以及超融合架構方案的價值。 一、超融合架構是什么? 超融合架構(Hyper-Converged Infrastruc
    的頭像 發表于 04-10 14:57 ?675次閱讀

    iOS 17.4 &amp; iPadOS 17.4 開發者將可控制“表情反應”默認行為

    蘋果公司在iOS 17.4及iPadOS 17.4的RC版開發者文檔中明確規定:“開發者可以使用特定代碼[…]以實現‘表情反應’功能的設定。然而,最終決定權取決于用戶自主選擇,而非應用程序預先設定。”
    的頭像 發表于 02-28 13:56 ?667次閱讀

    架構開發與優化咨詢和實施服務

    得益于硬件平臺算力的提升,汽車電子電氣架構的集成度逐漸提高,多域融合成為了目前行業中軟件工程的重要工作內容。經緯恒潤可以為汽車電子和軟件工程師在開發軟件架構過程中提供:既有軟件設計梳理與建模、
    的頭像 發表于 02-05 14:26 ?405次閱讀
    <b class='flag-5'>架構</b><b class='flag-5'>開發</b>與優化咨詢和實施服務

    【RISC-V開放架構設計之道|閱讀體驗】一本別出心裁的RISC-V架構之書(第一章)

    的計算機體系架構專 別出心裁地按照RISC-V模塊化的指令來組織內容 對比x86、ARM 和MIPS 的設計,通過對比分析,突顯RISC-V 的優勢 可以作為從業者隨時翻閱的案頭參考書 開頭的蒙娜麗莎像讓
    發表于 01-24 19:06
    主站蜘蛛池模板: sao虎在线精品永久| 午夜剧场官网| 玖玖在线免费视频| 久久综合影视| 国产视频一二区| 俺去啦最新网址| 午夜一级毛片| 日本黄色免费网站| sihu影院永久在线影院| 中文字幕一区二区三区有限公司| 一区二区三区视频在线| 男人j进入女人j在线视频| 一级毛片免费在线观看网站| 婷婷天堂| 免费一级特黄特色大片在线 | 中国男女全黄大片一级| 亚洲4区| 在线欧美视频免费观看国产| 四虎永久在线视频| 久久九九国产精品怡红院| 播放一级毛片| 欧美无限看| 4438x色| 五月婷婷中文字幕| 美女露出尿囗| 亚洲黄色网址在线观看| 国产毛片精品| 人人澡人人人人夜夜爽| 泰国一级毛片aaa下面毛多| 免费一看一级毛片| 最新福利网站| www.夜| 在线观看视频你懂的| 欧美一级在线观看播放| www.91插插插| www.操操操.com| 91九色蝌蚪在线| 免费你懂的| 天天射视频| 日本高清视频在线www色| 激情综合婷婷丁香六月花|