web-dev-qa-db-fra.com

Quels modèles de conception sont utilisés sur iOS autre que MVC?

J'ai besoin de connaître les modèles de conception utilisés dans le développement d'iPhone autres que MVC.

Veuillez répondre avec un exemple d'explication ou un exemple avec un extrait de code.

Merci.

49
Santosh Gurram

sine abstraite

Le modèle Abstract Factory fournit une interface pour créer des familles d'objets liés ou dépendants sans spécifier leurs classes concrètes. Le client est découplé de l'une des spécificités de l'objet en béton obtenu à l'usine.

adaptateur

Le modèle de conception d'adaptateur convertit l'interface d'une classe en une autre interface attendue par les clients. L'adaptateur permet aux classes de travailler ensemble, ce qui ne pourrait pas être le cas à cause d'interfaces incompatibles. Il dissocie le client de la classe de l'objet ciblé.

Chaîne de responsabilité

Le modèle de conception Chaîne de responsabilité dissocie l'expéditeur d'une demande de son destinataire en donnant à plusieurs objets la possibilité de traiter la demande. Le modèle enchaîne les objets récepteurs et transmet la demande le long de la chaîne jusqu'à ce qu'un objet la gère. Chaque objet de la chaîne gère la demande ou la transmet à l'objet suivant de la chaîne.

Commande

Le modèle de conception de commande encapsule une demande en tant qu'objet, vous permettant ainsi de paramétrer les clients avec différentes demandes, demandes de file d'attente ou de journal, et de prendre en charge les opérations annulables. L'objet de demande lie une ou plusieurs actions sur un récepteur spécifique. Le modèle de commande sépare un objet faisant une demande des objets qui reçoivent et exécutent cette demande.

Composite

Le modèle de conception composite compose les objets associés en structures arborescentes pour représenter des hiérarchies partielles. Le modèle permet aux clients de traiter les objets individuels et les compositions d'objets de manière uniforme. Le motif composite fait partie du motif agrégé Model-View-Controller.

Décorateur

Le modèle de conception Decorator associe dynamiquement des responsabilités supplémentaires à un objet. Les décorateurs offrent une alternative flexible au sous-classement pour étendre les fonctionnalités. Comme pour le sous-classement, l'adaptation du modèle Decorator vous permet d'incorporer de nouveaux comportements sans modifier le code existant. Les décorateurs enveloppent un objet de la classe dont ils étendent le comportement. Ils implémentent la même interface que l'objet qu'ils encapsulent et ajoutent leur propre comportement avant ou après la délégation d'une tâche à l'objet encapsulé. Le modèle Decorator exprime le principe de conception selon lequel les classes doivent être ouvertes à l'extension mais fermées à la modification.

Façade

Le modèle de conception de façade fournit une interface unifiée à un ensemble d'interfaces dans un sous-système. Le modèle définit une interface de niveau supérieur qui facilite l'utilisation du sous-système en réduisant la complexité et en masquant la communication et les dépendances entre les sous-systèmes.

Itérateur

Le modèle de conception Iterator fournit un moyen d'accéder séquentiellement aux éléments d'un objet agrégé (c'est-à-dire une collection) sans exposer sa représentation sous-jacente. Le modèle Iterator transfère la responsabilité d'accéder et de parcourir les éléments d'une collection de la collection elle-même à un objet itérateur. L'itérateur définit une interface pour accéder aux éléments de la collection et garde la trace de l'élément actuel. Différents itérateurs peuvent exécuter différentes politiques de traversée.

Médiateur

Le modèle de conception Mediator définit un objet qui encapsule la façon dont un ensemble d'objets interagit. Le médiateur favorise le couplage lâche en empêchant les objets de se référer explicitement les uns aux autres, et il vous permet de varier leur interaction indépendamment. Ces objets peuvent ainsi rester plus réutilisables. Un "objet médiateur" dans ce modèle centralise la logique complexe de communication et de contrôle entre les objets d'un système. Ces objets informent l'objet médiateur lorsque leur état change et, à leur tour, répondent aux demandes de l'objet médiateur.

Mémento

Le modèle Memento capture et extériorise l'état interne d'un objet - sans violer l'encapsulation - afin que l'objet puisse être restauré dans cet état ultérieurement. Le motif Memento maintient l'état important d'un objet clé à l'extérieur de cet objet pour maintenir la cohésion.

Observateur

Le modèle de conception Observer définit une dépendance un-à-plusieurs entre les objets afin que lorsqu'un objet change d'état, toutes ses dépendances soient notifiées et mises à jour automatiquement. Le modèle Observer est essentiellement un modèle de publication et d'abonnement dans lequel le sujet et ses observateurs sont faiblement couplés. La communication peut avoir lieu entre l'observation et les objets observés sans que l'un ou l'autre ait besoin d'en savoir beaucoup sur l'autre.

Proxy

Le modèle de conception de proxy fournit un substitut ou un espace réservé pour un autre objet afin de contrôler l'accès à cet autre objet. Vous utilisez ce modèle pour créer un objet représentatif, ou proxy, qui contrôle l'accès à un autre objet, qui peut être distant, coûteux à créer ou nécessitant une sécurisation. Ce modèle est structurellement similaire au modèle Decorator mais il sert un objectif différent; Decorator ajoute un comportement à un objet tandis que Proxy contrôle l'accès à un objet.

Réceptionniste

Le modèle de conception de réceptionniste résout le problème général de la redirection d'un événement se produisant dans un contexte d'exécution d'une application vers un autre contexte d'exécution pour la gestion. C'est un modèle hybride. Bien qu'il n'apparaisse pas dans le livre "Gang of Four", il combine des éléments des modèles de conception Command, Memo et Proxy décrits dans ce livre. C'est aussi une variante du motif Trampoline (qui n'apparaît pas non plus dans le livre); dans ce modèle, un événement est initialement reçu par un objet trampoline, ainsi appelé parce qu'il rebondit ou redirige immédiatement l'événement vers un objet cible pour le gérer.

Singleton

Le modèle de conception Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global à celle-ci. La classe garde une trace de sa seule instance et s'assure qu'aucune autre instance ne peut être créée. Les classes singleton conviennent aux situations où il est logique qu'un seul objet donne accès à une ressource globale.

Méthode de modèle

Le modèle de conception de la méthode de modèle définit le squelette d'un algorithme dans une opération, reportant certaines étapes aux sous-classes. Le modèle de méthode de modèle permet aux sous-classes de redéfinir certaines étapes d'un algorithme sans modifier la structure de l'algorithme.

Source: Cocoa Design Patterns .

108
DrummerB

Dans les applications du monde réel, les bases de code deviennent complexes au fil du temps et vous vous retrouvez avec des contrôleurs de vue massifs, qui sont difficiles à tester et à maintenir. La solution consiste à utiliser MVVM , qui est une meilleure alternative à MVC lui-même.

2
Jani

L'utilisation du modèle de conception MVVM dans votre application est liée à votre logique métier que vous ferez dans votre projet pour afficher certains contenus à afficher. Dans le cas où votre vue n'a pas besoin de plus de logique pour afficher son contenu, vous pouvez utiliser MVC, mais si vous devez créer une logique métier pour afficher ce contenu, la meilleure pratique dans ce cas est de séparer cette logique pour qu'elle soit dans une autre couche, donc MVVM sera mieux dans ce cas, ViewModel dans MVVM contiendra cette logique.

À mon avis, MVVM est meilleur que MVC sur la conception de niveau pour ces raisons

  • MVVM est compatible avec votre architecture MVC existante.
  • MVVM rend vos applications plus testables.
  • MVVM fonctionne mieux avec un mécanisme de liaison.

Comment MVVM est compatible avec MVC

  • MVC> Modèle, vue, contrôleur
  • MVVM> Modèle, Vue, ViewModel> Modèle, (ViewController), ViewModel
1
Ahmed Askar