2017-10-17 10 views
-1

Comment implémenter l'architecture mvvm dans objectif-c? J'ai besoin d'un exemple de projet pour apprendre l'architecture de mvvm et aussi j'ai besoin de savoir ce qui est nécessaire pour donner en model, view, viewModel et comment séparer en objective-c? Quelle est la différence entre le projet normal et le projet mvvm?implémentation de l'architecture mvvm dans objectif-c

+0

En demandant une bibliothèque, le didacticiel n'est pas un sujet valide ici. Si vous avez besoin d'un exemple de projet, recherchez un tutoriel en ligne pour yourserlf. –

Répondre

2

Jesto Je peux vous donner des détails sur ce que vous demandez brièvement.Même si c'est une explication, vous pouvez facilement comprendre ce que je poste ici, car il a des sources avec des exemples et vous pouvez essayer directement la source.

First the Model

La couche modèle n'est pas aussi explicite que cela puisse paraître.

Comme vous vous en doutez, il aura vos objets modèles, potentiellement couvrant la plus grande partie de la surface de la couche. Dans l'exemple de tickets, vous avez une structure de ticket qui serait intégrée à votre modèle.

Je trouve les éléments suivants soient également partie de la couche de modèle:

code réseau. La forme devrait être quelque chose comme ça. Idéalement, vous n'utilisez qu'une seule classe pour la communication réseau sur l'ensemble de votre application . Code de persistance. Vous implémenteriez ceci avec des données de base ou simplement en sauvegardant un blob de NSData directement sur le disque. Code d'analyse. Tous les objets qui analysent les réponses réseau et similaires doivent également être inclus dans la couche Modèle.

Alors que les objets du modèle et l'analyseur sont spécifiques au domaine, le code réseau sera hautement réutilisable.

Le contrôleur utilisera ensuite tous les éléments de votre calque de modèle pour définir le flux d'informations dans votre application.

Second the View

Lorsqu'un utilisateur interagit avec votre application, ils sont en interaction avec la couche de vue . La vue est considérée comme la partie "idiote" de votre application, puisqu'elle ne doit contenir aucune logique métier, car . En termes de code, vous verrez normalement voir:

Sous-classes UIView. Cela va d'un UIView de base à des contrôles d'interface utilisateur personnalisés complexes. Un UIViewController (discutable). Depuis un UIViewController est fortement couplé avec sa propre racine UIView et ses différents cycles (loadView, viewDidLoad), je considère personnellement qu'il fait partie de cette couche , mais tout le monde n'est pas d'accord. Animations et transitions UIViewController. Classes faisant partie d'UIKit/AppKit, Core Animation et Core Graphics.

Les odeurs de code typiques trouvées dans cette couche se manifestent de différentes manières, mais se résument à inclure tout ce qui n'est pas lié à l'interface utilisateur dans votre vue . Une odeur de code classique effectue un appel réseau à partir d'un UIViewController .

Il est tentant de mettre beaucoup de code dans votre UIViewController et d'en faire le , afin que vous puissiez respecter cette date limite. Ne fais pas ça!Dans le terme court , vous pouvez économiser quelques minutes, mais à long terme, vous pourrait perdre des heures à la recherche d'un bug, ou avoir des problèmes lorsque vous souhaitez réutiliser le code dans un contrôleur de vue dans un autre.

Third MVVM

Model-View-ViewModel ou MVVM, est une dérivation MVC. Conceptuellement, c'est similaire. La plus grande différence est dans la communication entre les couches , et au lieu d'un contrôleur, vous utilisez un modèle de vue.

En pratique, MVVM brille lorsqu'il dispose d'un cadre FRP pour le prendre en charge. Étant donné que le modèle est maintenant observé par le modèle de vue et le modèle de vue par la vue, le paradigme FRP devient un choix naturel pour gérer le flux d'informations . Cela conduit à une meilleure séparation entre les couches, qui se traduit par des composants découplés qui sont faciles à tester.

Bottom line: l'architecture est importante, mais à mon avis le bon paradigme de programmation influencera plus la qualité globale de votre code . Il est également important de noter que, le plus souvent, vous aurez dans la même application différentes approches. Ceci inclut à la fois l'architecture et le paradigme. Vous pourriez penser que cela va perturber la cohérence dans le code de base, mais vous devez toujours utiliser l'outil approprié pour le travail.

Finally MVC

Le modèle de conception Model-View-Controller (MVC) attribue des objets dans une application l'un des trois rôles: modèle, vue, ou un contrôleur. Le modèle définit non seulement les rôles joués par les objets dans l'application, mais définit la manière dont les objets communiquent entre eux. Chacun des trois types d'objets est séparé des autres par des limites abstraites et communique avec les objets des autres types à travers les limites . La collection d'objets d'un certain type MVC dans une application est parfois appelée couche, par exemple, modèle . MVC est au cœur d'un bon design pour une application Cocoa.

Les avantages d'adopter ce modèle sont nombreux. Beaucoup d'objets dans ces applications ont tendance à être plus réutilisables, et leurs interfaces ont tendance à être mieux définies. Les applications ayant une conception MVC sont également plus facilement extensibles que d'autres applications. De plus, de nombreuses technologies Cocoa et architectures sont basées sur MVC et nécessitent que vos objets personnalisés jouent l'un des rôles MVC.

Difference between Normal and MVVM

Modèles - responsables des données de domaine ou une couche d'accès aux données qui manipule les données, pensent de « personne » ou classes »PersonDataProvider.

Vues - responsable de la couche de présentation (GUI), pour l'environnement iOS pensez à tout ce qui commence par le préfixe «UI».

Controller/Présentateur/ViewModel - la colle ou le médiateur entre le modèle et la vue, en général responsable de la modification du modèle par réaction aux actions effectuées sur la vue et la mise à jour de l'utilisateur la vue des changements de le modèle.

MVVM Says

Le dernier et le plus grand du MV (X) type Le MVVM est le plus récent de MV (X) genre ainsi, nous espérons qu'il a émergé en prenant en compte les problèmes MV (X) faisait face précédemment. En théorie, le Model-View-ViewModel semble très bon. La vue et le modèle nous sont déjà familiers, mais aussi le médiateur représenté par le modèle View. MVVM Il est assez similaire au MVP: le MVVM traite le contrôleur de vue comme la vue Il n'y a pas de couplage étroit entre la vue et le modèle En outre, il se lie comme la version de supervision du MVP; Cependant, cette fois pas entre la vue et le modèle, mais entre la vue et le modèle Voir. Alors, quel est le modèle View dans la réalité iOS? Il s'agit essentiellement de la représentation indépendante UIKit de votre vue et de son état . Le modèle de vue appelle les modifications dans le modèle et se met à jour lui-même avec le modèle mis à jour, et puisque nous avons une liaison entre la vue et le modèle de vue, le premier est mis à jour en conséquence.

également the MVVM Design Pattern et How does MVVM work?