簡體   English   中英

MVC設計模式-設計模型

[英]MVC design Pattern - Designing a Model

我一直在使用mvc設計模式來開發iOS,我想知道自己是否做對了。 我已經閱讀了很多有關MVC的文章,就我的觀點而言,所有將要顯示或將改變視圖特征的信息都將存儲在模型中(因為這是我vc的“知識”)。 因此,以我設計MVC的方式,我通常為用戶交互的每個視圖創建一個mvc,並且我擁有管理整個App中所有“共享”信息的模型對象,以及一個用於持久存儲某些數據的“ UserSession”類。 例如:

在我的HomeViewController中,根據對象的狀態,我有不同的子視圖,因此在此MVC(主頁)中,我有一個“演示者”作為控制我的homeSubview類型及其數據的模型。 當我需要從另一個模型對象(例如用戶或任何對象)中檢索信息時,我的“演示者模型”將發揮作用(在這種情況下),並且在項目內的另一個mvc中也會發生同樣的情況。 我的方式是這樣的:

控制器[詢問]模型(如果需要,可以與其他模型通信),然后[“響應”]控制器,然后[更新]視圖

因此,這對我來說看起來不錯,但是我跌倒了,因為我沒有正確使用mvc模式。 有人可以發表意見嗎?

提前:對英語感到抱歉。 非常感謝您的任何建議/幫助,謝謝!

盡管您的建議聽起來更像是MVVM(C)模式而不是MVC,但我的建議沒有什么錯。

因此,在iOS中,我們幾乎被迫使用視圖控制器,因此這里需要額外的(C),但本質上是:

  • M(模型),這些應該代表您的數據模型。 class Model { var firstName: String var lastName: String .... }
  • V(視圖),它應該處理演示文稿,繪制到屏幕上並顯示數據class View: UIView { let fullNameLabel = UILabel() }
  • VM(視圖模型),在這里您可以調整模型中的數據以適合您的視圖需求。 這樣做的好處是,如果您有多個視圖來顯示同一模型類中的數據,則只需添加一個新的視圖模型,以適應其所需的數據,而不用使用許多輔助方法將模型弄亂, class ViewModel { let model: Model func fullName() -> String { return "(model.firstName) (model.lastName)" } }

顯然,我們還有一個控制器可以協調整個過程:)

在我看來,這就是您正在做的事情,您的presenter是視圖模型。

這有助於封裝實際上不屬於您的視圖或模型的功能。 從技術上講,全名不是數據模型的一部分,也不是呈現/表示形式的名稱,因此我們將其移至適配器/表示者/視圖模型(無論您要使用什么名稱)。

也許這對您有幫助? 如果您需要更多反饋或有任何其他問題,請隨時為其他信息提供代碼示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM