2017-10-17 6 views
-1

objective-cでのmvvmアーキテクチャの実装方法は?私は、mvvmアーキテクチャを学ぶためのサンプルプロジェクトが必要です。また、モデル、ビュー、ビューモデル、目的で分離する方法を教えてください。通常のプロジェクトとmvvmプロジェクトの違いは何ですか?objective-cでのmvvmアーキテクチャの実装

+0

ここでは、チュートリアルは有効なトピックではありません。サンプルプロジェクトが必要な場合は、yourserlfのオンラインチュートリアルを参照してください。 –

答えて

2

Jesto私はあなたが簡単に聞いたことについての詳細を説明することができます。たとえ説明であっても、私がここに投稿した内容は例があるソースがあり、ソースを直接試すことができるからです。

First the Model

モデル層は自明それが見えることができるほどではありません。

予想通り、レイヤーサーフェスの大部分をカバーする可能性のあるモデルオブジェクトがあります。 です。チケットの例では、 には、モデルに存在するTicket構造体があります。

ネットワークコード:

は、私は、次のコンポーネントは、モデル層の一部であることがわかりました。形はこのようなものでなければなりません。理想的には、アプリケーション全体で のネットワーク通信に1つのクラスのみを使用することをおすすめします。 永続性コード。コアデータを使ってこれを実装するか、単純にNSData blobを直接ディスクに保存します。 コードの解析。ネットワークレスポンスなどを解析するオブジェクトは、Modelレイヤーにも含める必要があります。

モデルオブジェクトとパーサーはドメイン固有ですが、 ネットワークコードは再利用可能性が高くなります。

コントローラは、モデルレイヤのすべての要素を使用して アプリの情報フローを定義します。

Second the View

ユーザーがあなたのアプリと対話するとき、彼らは ビュー層と対話しています。ビューはアプリの「ダム」部分とみなされます。 にはビジネスロジックを含めるべきではないためです。コード用語では、 は通常次のように表示されます。

UIViewサブクラス。基本的なUIViewから複雑なカスタムUIコントロールまでの範囲です。 UIViewController(おそらく)。 UIViewControllerは独自のルートUIViewとその異なるサイクルと強く結びついているので、私は個人的にはこれを レイヤーの一部と見なしますが、誰もが同意しているわけではありません。 アニメーションとUIViewControllerのトランジション。 UIKit/AppKit、Core Animation、Core Graphicsの一部であるクラス。

このレイヤーで見つかった典型的なコードの臭いは、異なる方法で表現されますが、 ですが、ビューには無関係なものが含まれています。 レイヤー。古典的なコードの臭いは、 UIViewControllerからネットワークコールを発信しています。

あなたのUIViewControllerにコードを入れて とすると、その期限を過ぎることができます。しないでください! という用語では、2〜3分節約するかもしれませんが、長期的には、 はバグを探したり、別のビューコントローラ内で コードを再利用したいときに問題が発生する可能性があります。 Third MVVM

モデル - ビュー - ViewModelに、またはMVVMは、MVCの派生です。概念的には、それは似ている です。最大の違いは、 レイヤー間の通信であり、コントローラの代わりにビューモデルを使用します。

実際には、MVVMは、サポートするFRPフレームワークがあるときに輝きます。 モデルはビューモデルとビューモデル によってビューで観察されるので、FRPパラダイムは情報フローを管理するための自然な選択になります。これにより、レイヤ間の分離が良好になります。 デカップリングされたコンポーネントは、テストが容易です。

要点:アーキテクチャは重要ですが、私の意見では、 プログラミングパラダイムが コードの全体的な品質に影響を与えます。ほとんどの場合そうではないことに注意することも重要です。 には同じアプリで異なるアプローチがあります。これには、 アーキテクチャとパラダイムの両方が含まれます。これにより、コードベース内で の整合性が損なわれると思われるかもしれませんが、ジョブには常に正しいツール を使用する必要があります。

Finally MVC

モデル・ビュー・コントローラ(MVC)デザインパターンは、3つの役割の アプリケーションいずれかのオブジェクトを割り当て:モデル、ビュー、コントローラ。 パターンは、オブジェクトがアプリケーションで果たす役割だけでなく、 が相互に通信する方法を定義します。 3つの オブジェクトのそれぞれは、抽象的な境界 によって他のオブジェクトから分離され、それらの境界をまたいで他のタイプのオブジェクトと通信します。 アプリケーション内の特定のMVCタイプのオブジェクトのコレクションは、レイヤーと呼ばれることもあります(たとえば、モデル レイヤー)。

MVCは、Cocoaアプリケーションの優れた設計の中心です。このパターンを採用する利点は多くあります。これらの アプリケーションの多くのオブジェクトは、再利用可能な傾向があり、そのインターフェイスはよりよく定義された です。 MVCデザインを持つアプリケーションは、他のアプリケーションよりも拡張性が高い です。さらに、多くのCocoaテクノロジ とアーキテクチャはMVCに基づいており、カスタムの オブジェクトがMVCロールの1つを再生する必要があります。

Difference between Normal and MVVM

モデル - ドメインデータやデータを操作するデータアクセス層 を担当し、「人」または「のpersonDataProvider」 クラスを考えます。

Views - プレゼンテーションレイヤー(GUI)の責任を負い、iOS環境の場合、「UI」プレフィクスで始まるものすべてを考えてください。

コントローラ/プレゼンター/ ViewModelに - ビューに対して実行ユーザーのアクションに反応してから変更を ビューを更新することにより、モデル を変更するための責任が一般的には接着剤やモデルとビューの間の仲介、モデル。

MVVM Says

最新かつMVの最大の(X)の種類MVVMがあるMVの最新 (X)の種類ので、のは、それがアカウントの問題を考慮 MVを出現を期待しましょう( X)が直面していた。理論的にはModel-View-ViewModelは と非常によく見えます。ビューとモデルはすでにわかりやすいですが、 というメディエータもビューモデルとして表されています。 MVVM非常によく似ています MVP: MVVMはビューコントローラをビューとして扱います ビューとモデルの間には密接な結合はありませんさらに、MVPの監視バージョンのようにバインドします。 ただし、今回はビューとモデルの間ではなく、 ビューとビューモデルの間です。だから、iOS現実のView Modelは何ですか? これは、基本的にあなたのビューとその 状態のUIKitから独立した表現です。ビューモデルはモデルの変更を呼び出し、 を更新されたモデルで更新します。ビュー とビューモデルの間にバインディングがあるため、最初のビューが更新されます。

またthe MVVM Design PatternHow does MVVM work?

0

すると、このトピックそれをチェックアウト - >https://github.com/futurice/mvvm-example-objc、多分次のステップは、あなたはそれなぜなら反応ココアを使用することができます - >What is the difference between MVC and MVVM?

モデル - ビュー - ViewModelに基本的な例はここにありますMVVMでより効果的にすることができ - >https://github.com/ReactiveCocoa/ReactiveViewModel

反応ココア - >https://github.com/ReactiveCocoa/ReactiveCocoa

goodluck :)

関連する問題