91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第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

    文章

    3399

    瀏覽量

    153112
  • 架構
    +關注

    關注

    1

    文章

    528

    瀏覽量

    25992
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    主流機器視覺軟件開發平臺介紹及對比

    機器視覺作為工業自動化的核心技術,其軟件開發平臺的選擇直接影響項目的開發效率、成本及最終性能。本文將對比當前主流的視覺開發平臺,包括LabVIEW、VisionPro、Halcon
    的頭像 發表于 07-14 09:44 ?115次閱讀
    主流機器視覺軟件<b class='flag-5'>開發</b>平臺介紹及<b class='flag-5'>對比</b>?

    同一水平的 RISC-V 架構的 MCU,和 ARM 架構的 MCU 相比,運行速度如何?

    ARM 架構與 RISC-V 架構的 MCU 在同一性能水平下的運行速度對比,需從架構設計原點、指令集特性及實際測試數據展開剖析。以 ARM Cortex-M33 這類 ARMv8M
    的頭像 發表于 07-02 10:29 ?651次閱讀
    同一水平的 RISC-V <b class='flag-5'>架構</b>的 MCU,和 ARM <b class='flag-5'>架構</b>的 MCU 相比,運行速度如何?

    【HarmonyOS Next】ArkUI-X休閑益智接水果【進階】

    本文通過ArkUI-X實現跨平臺接水果游戲,深入探究網絡圖片在HarmonyOS與iOS設備上的渲染差異,并提供專業級優化方案。基于WebView的混合架構,我們實現了單代碼庫雙端適配的高效開發
    發表于 06-28 22:14

    主流版本控制工具Git vs Perforce P4:架構模式、性能、大文件管理及分支管理對比詳解

    Git vs Perforce P4,如何選型?架構模式、性能、大文件管理、分支策略四大維度對比,幫你全面了解兩者的核心差異,選擇更合適你團隊需求的版本控制系統。
    的頭像 發表于 06-13 14:52 ?205次閱讀
    主流版本控制工具Git vs Perforce P4:<b class='flag-5'>架構</b>模式、性能、大文件管理及分支管理<b class='flag-5'>對比</b>詳解

    技術分享 | 如何在2k0300(LoongArch架構)處理器上跑通qt開發流程

    技術分享 | 如何在2k0300開發板(LoongArch架構)處理器上跑通qt開發流程
    的頭像 發表于 05-20 11:05 ?288次閱讀
    技術分享 | 如何在2k0300(LoongArch<b class='flag-5'>架構</b>)處理器上跑通qt<b class='flag-5'>開發</b>流程

    CY7C65215使用IOS中的USB CDC UART類驅動程序是否可以與IOS一起工作?

    我知道 CY7C65215 沒有適用于 IOS 的驅動程序。但是,使用 IOS 中的 USB CDC UART 類驅動程序是否可以與 IOS 一起工作? 我們正在考慮在我們的設備中安裝 CY7C65215 而不是 FTDI US
    發表于 04-30 07:57

    請問TapLinx IOS SDK與Xcode 16不兼容嗎?

    ]/taplinxlibrary/taplinxlibrary.swiftmodule/arm64-apple-ios.swiftmodule 清理 Build / 刪除 DerivedData 目錄,然后
    發表于 04-02 06:19

    北京迅為RK3568開發板OpenHarmony系統南向驅動開發內核HDF驅動框架架構

    北京迅為RK3568開發板OpenHarmony系統南向驅動開發內核HDF驅動框架架構
    的頭像 發表于 03-11 14:13 ?1127次閱讀
    北京迅為RK3568<b class='flag-5'>開發</b>板OpenHarmony系統南向驅動<b class='flag-5'>開發</b>內核HDF驅動框架<b class='flag-5'>架構</b>

    RISC-V架構及MRS開發環境回顧

    ,華為海思轉向了開源指令集架構RISC-V,針對鴻蒙操作系統的開發者發布了首款RISC-V開發板Hi3861。Hi3861針對的是物聯網市場,突破ARM限制。(5)RISC-V架構應用
    發表于 12-16 23:08

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

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

    Appium +iOS自動化測試教程(實踐、總結 、踩坑)

    的使用都不太熟悉,花了大概一周時間粗略的看下ios開發知識,網上隨手下載的來源于這兩本《iOS開發從入門到精通.pdf》、《iOS
    的頭像 發表于 11-11 09:42 ?4897次閱讀
    Appium +<b class='flag-5'>iOS</b>自動化測試教程(實踐、總結 、踩坑)

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

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

    risc-v與esp32架構對比分析

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

    9月26日云技術研討會 | SOA整車EE架構開發流程及工具實施方案

    本次研討會經緯恒潤將結合業務團隊多年來在SOA架構開發和工具實施領域的項目實踐經驗,分享探討SOA趨勢下先進的整車EE架構開發模式,聚焦在SOA開發
    的頭像 發表于 09-19 17:09 ?599次閱讀
    9月26日云技術研討會 | SOA整車EE<b class='flag-5'>架構</b><b class='flag-5'>開發</b>流程及工具實施方案

    自動駕駛三大主流芯片架構分析

    ,但是在AI應用領域也是必不可少。GPU方案GPU與CPU的架構對比CPU遵循的是馮·諾依曼架構,其核心是存儲程序/數據、串行順序執行。因此CPU的架構中需要大量的空
    的頭像 發表于 08-19 17:11 ?2400次閱讀
    自動駕駛三大主流芯片<b class='flag-5'>架構</b>分析
    主站蜘蛛池模板: 日韩一级免费视频 | 久久天天躁夜夜躁狠狠躁2015 | 午夜国产精品久久影院 | 久久99精品久久久久久秒播 | 四虎影院最新 | 久久免费99精品久久久久久 | 国模娜娜扒开嫩木耳 | 最新激情网 | 免费又爽又黄1000禁片 | 天天澡天天摸天天添视频 | 免费大片看黄在观看 | 亚洲色图欧美激情 | 亚洲h视频 | 久久精品乱子伦观看 | 中文在线资源链接天堂 | 中文字幕卡二和卡三的视频 | 午夜在线播放视频 | 性色网址| 美女网站视频一区 | 亚洲码欧美码一区二区三区 | 萌白酱白丝护士服喷水铁牛tv | 久久久噜噜噜久久中文字幕色伊伊 | 激情综合色五月丁香六月亚洲 | 足控免费视频xxav | www永久免费视频 | 91国内在线国内在线播放 | 色视频网站大全免费 | 窝窝午夜看片成人精品 | 日本一区二区高清免费不卡 | 欧美成人在线网站 | 欲香欲色 | 午夜视频黄色 | 拍拍拍交性免费视频 | 精品国产乱码一区二区三区 | 黄 色 录像成 人播放免费99网 | 亚欧人成精品免费观看 | 亚洲免费色 | 欧美视频a| 手机福利片| 特黄特a级特别特级特毛片 特黄特色大片免费播放路01 | 亚洲小视频 |