2017-10-17 42 views
-1

MVVM架構如何實現在Objective-C的MVVM架構?我需要示例項目來學習mvvm體系結構,並且我需要知道在model-view,viewModel以及如何在objective-c中分離需要什麼?正常項目和mvvm項目有什麼區別?實現在Objective-C

+0

問計庫,教程是不是在這裏有效的主題。如果您需要一個示例項目,請在線爲您尋找一本教程。 –

回答

2

Jesto我可以給你詳細介紹你簡要問的問題。即使它是解釋,你也可以很容易地理解我在這裏發佈的內容,因爲它有源代碼示例,你可以直接嘗試源代碼。

First the Model

模型層不如言自明,因爲它看起來。如您所料,它將包含您的模型對象,可能包含覆蓋大部分圖層表面的 。在門票的例子中,你會有 有一個Ticket結構存在於你的模型中。

我發現下列組件也是模型層的一部分:

網絡代碼。形狀應該是這樣的。理想情況下,您只需在整個應用中使用一個班級進行網絡通信。 持久性代碼。你可以用Core Data實現這個,或者直接將NSData blob直接保存到磁盤。 解析代碼。任何解析網絡響應等的對象也應包含在模型層中。

雖然模型對象和解析器是域特定的,但網絡代碼將具有高度可重用性。

控制器將使用您的模型層中的所有元素來定義應用程序中的信息流。

Second the View

當用戶與您的應用程序進行交互,它們與 視圖層進行交互。該視圖被認爲是您的應用程序的「啞巴」部分,因爲它不應包含任何業務邏輯,因爲它是 。在代碼方面,您通常會看到: :

UIView子類。這些範圍從基本的UIView到複雜的自定義UI控件。 一個UIViewController(可以說)。由於一個UIViewController強烈與它自己的根的UIView和其不同的週期 (的loadView,viewDidLoad中)耦接,我個人認爲這是本 層的一部分,但不是每個人都同意。 動畫和UIViewController轉換。 屬於UIKit/AppKit,Core Animation和Core Graphics的類。

在此圖層中找到的典型代碼氣味以不同方式顯示, 但歸結爲在您的視圖 圖層中包含與UI無關的任何內容。一個典型的代碼味道是從一個 UIViewController進行網絡調用。

在你的UIViewController中放入一堆代碼並且使用 來完成它是很誘人的,所以你可以達到那個期限。不要這樣做!在短期的 期限內,您可能會節省幾分鐘時間,但從長遠來看,您可能會在尋找錯誤時損失數小時,或者在想要在另一個視圖控制器內重用代碼時遇到問題。

Third MVVM

模型 - 視圖 - 視圖模型,或MVVM,是一個MVC推導。從概念上講,它與 類似。最大的區別在於 層之間的通信,而不是控制器,您使用視圖模型。

實際上,當MVVM具有FRP框架來支持MVVM時,它會發光。 由於模型現在由視圖模型和視圖模型 觀察到,所以FRP範例成爲管理信息流的自然選擇。這導致層之間的更好的分離, 它轉換爲易於測試的解耦組件。底線:體系結構很重要,但在我看來,正確的 編程範例將影響更多的代碼的整體質量。同樣重要的是要注意,通常情況下,您不會在同一應用中使用不同的方法。這包括 體系結構和範例。你可能會認爲這會破壞代碼庫中的 一致性,但你應該總是使用正確的 工具來完成這項工作。

Finally MVC

模型 - 視圖 - 控制器(MVC)設計模式在 應用三種角色中的一個分配對象:模型,視圖或控制器。 模式不僅定義了對象在應用程序中扮演的角色,還定義了對象之間相互通信的方式。通過抽象邊界 將三個物體類型中的每一個與其他物體分開,並與其他類型的物體通過這些邊界進行通信。 應用程序中某個MVC類型對象的集合有時稱爲圖層 - 例如,模型 圖層。

MVC是Cocoa應用程序良好設計的核心。採用這種模式的好處 很多。這些應用程序中的許多對象往往更易於重用,並且它們的接口傾向於更好地定義爲 。具有MVC設計的應用程序也比其他應用程序更容易擴展。此外,很多Cocoa技術和體系結構都基於MVC,並且要求您的自定義對象扮演MVC角色之一。

Difference between Normal and MVVM

模型 - 負責域數據或操縱數據的數據訪問層 ,認爲「人」或「的personDataProvider」 類。

觀看次數 - 負責表示層(GUI),iOS環境下的任何事情都考慮以'UI'前綴開頭的所有內容。

控制器/演示/視圖模型 - 膠水或模型和視圖之間的調停,一般負責通過使對視圖執行用戶的操作和更新 與從變化視圖改變模型 該模型。

MVVM Says

最新和最偉大的MV(X)種的MVVM是MV的最新 (X)樣因此,讓我們希望它出現在考慮的問題 MV( X)以前面臨。從理論上講,Model-View-ViewModel看起來非常不錯。視圖和模型對我們來說已經很熟悉,但也是代表視圖模型的調解器。 MVVM這是很相似 的MVP: 的MVVM把視圖控制器作爲視圖 還有就是視圖和模型此外,它確實像MVP的監督版本綁定之間沒有緊密結合;然而,這次不是在視圖和模型之間,而是在 視圖和視圖模型之間。那麼iOS現實中的視圖模型是什麼? 它基本上是你的視圖和它的 狀態的UIKit獨立表示。視圖模型調用示範和變化與更新的型號更新自己 ,並且由於視圖 和視圖模型之間,我們有一個結合,第一個相應的更新。

而且the MVVM Design PatternHow does MVVM work?