modèles de conception orientés objet expliqués à l’aide d’exemples pratiques
modèles comportementaux
Ces types de modèles concernent la communication entre les objets. Dans la plupart des cas, les dépendances entre les objets communicants sont réduites grâce à ces modèles, ce qui conduit à une meilleure conception logicielle.
chaîne de responsabilité
Ce modèle crée une chaîne d’objets récepteurs pour une requête. Il évite de coupler l’expéditeur d’une requête au récepteur et donne à plusieurs objets la possibilité de gérer la requête. Les objets récepteurs sont liés entre eux., Dans l’exemple ci-dessous, une chaîne d’unités middleware est construite. La demande, contenant l’email et le mot de passe, est transmise dans la chaîne. De nouveaux éléments dans la chaîne peuvent être facilement ajoutés.
la Commande
Dans le modèle de commande d’un objet est utilisé pour encapsuler toutes les informations nécessaires pour effectuer une action ou un événement se déclenche à une date ultérieure. Comme indiqué ci-dessous, ActionOpen définit L’action ainsi que l’objet sur lequel l’action est exécutée., Plus d’informations ne sont pas nécessaires et un autre objet, ici menu, peut exécuter l’action.
Interprète
L’Interprète schéma définit une représentation de la grammaire d’une langue, et fournit la capacité d’interpréter les phrases de cette langue. Dans l’extrait de code ci-dessous, un objet Plus peut interpréter « operand1 + operand2” et sait quoi faire avec cette expression. Plus d’interprètes peuvent être ajoutés sans trop changer la structure. L’analyseur utilise ensuite des interprètes pour comprendre les entrées.,
Iterator
L’Itérateur est utilisée pour parcourir un conteneur de données d’accès du conteneur éléments sans avoir besoin de connaître la structure sous-jacente. De plus, de nouvelles variantes de traversée peuvent être ajoutées sans changer l’interface des objets ou la structure de données elle-même.
Le ChannelSurfer, représenté ci-dessous, peut accéder aux canaux de manière consécutive. L’objet RemoteControl n’a pas besoin de se soucier de la façon dont les canaux sont organisés. Un RandomChannelSurfer, par exemple, peut être ajouté sans trop de problèmes.,
Médiateur
Si deux ou plusieurs objets de la nécessité de collaborer, le Médiateur modèle pourrait être appliqué. Surtout si les objets ne se connaissent pas, s’ils ne doivent pas être étroitement couplés ou si leur interaction est complexe, Ce modèle peut aider.
dans l’exemple ci-dessous, il y a une interaction nécessaire entre les éléments de L’interface utilisateur. Cette interaction se produit à travers L’AuthenticationDialog en tant que médiateur. De cette façon, l’interaction n’est pas définie dans l’un des objets participants, mais extraite dans le médiateur.,
Souvenir
Le Souvenir est utile si un certain état d’un objet doit être sauvegardés pour une utilisation ultérieure. Ainsi, il ne viole pas l’encapsulation des détails d’implémentation de cet objet. Il peut par exemple être utilisé pour la mise en œuvre d’un mécanisme d’annulation.
Observateur
Dans le modèle observateur observateur objets s’abonner à un objet observé à être averti à chaque fois les changements observables ses données., Les observateurs sont faiblement couplés et peuvent être ajoutés et supprimés au moment de l’exécution.
En ce qui concerne la façon dont l’observateur obtient finalement les données de l’observable, il existe deux variantes: push et pull. Le code ci-dessous montre la variante de traction, qui est plus flexible car dans ce cas, l’observable n’a pas besoin de savoir comment l’observateur veut recevoir les données, mais l’observateur peut récupérer les données comme souhaité.
État
L’État de modèle permet à un objet de modifier son comportement lors de son état interne change., Ce modèle est similaire au modèle de stratégie, mais dans ce cas, il est décidé en interne comment les objets se comportent. Ceci est particulièrement utile si des conditions complexes définissent le comportement de l’objet. De nouveaux États peuvent être ajoutés indépendamment des états existants.
Stratégie
Dans le cadre de la Stratégie de modèle, il existe de multiples variantes pour un algorithme où une variante est choisi pour être exécuté au moment de l’exécution.,
Dans l’exemple ci-dessous, un objet compresseur peut être utilisé avec l’un des deux algorithmes différents définis au moment de l’exécution. La méthode qui exécute l’action (createArchive) applique ensuite l’algorithme choisi.
Modèle
Le pattern Template définit une structure de sous-classes dans lesquelles les étapes d’un algorithme et leur ordre sont définis. Cela garantit que les sous-classes suivent exactement les mêmes étapes, offrant une meilleure vue d’ensemble et une meilleure cohérence., Il permet également de définir des implémentations par défaut pour les étapes qui peuvent être remplacées par des sous-classes.
comme indiqué ci-dessous, tous les analyseurs héritant de DataParser suivent exactement les mêmes étapes lorsque parse() est exécuté. Cela garantit par exemple que tous les analyseurs ferment les fichiers et enregistrent l’état.
Visiteur
Le Visiteur pattern permet d’appliquer une ou plusieurs opération à un ensemble d’objets au moment de l’exécution, sans avoir les opérations étroitement lié à la structure de l’objet.,
Ceci vous permet d’implémenter une double répartition où un appel de fonction à différentes fonctions concrètes dépend du type d’exécution de deux objets. Dans l’exemple ci-dessous, d’une part, il y a des éléments d’itinéraire et d’autre part, des objets visiteurs qui exécutent chacun des fonctions différentes sur les éléments d’itinéraire. S’il y a plus de visiteurs ajoutés à l’avenir, l’élément route n’a pas besoin de changer.