Itérateur

Iterator est un modèle de conception comportemental. Représente un objet qui permet un accès séquentiel aux éléments d'un objet agrégé sans utiliser les descriptions de chacun des objets agrégés.

Itérateur

Par exemple, des éléments tels qu'un arbre, une liste chaînée, une table de hachage et un tableau peuvent être parcourus (et modifiés) à l'aide d'un objet Iterator.

L'itération à travers les éléments est effectuée par l'objet itérateur, et non par la collection elle-même. Cela simplifie l'interface et la mise en œuvre de la collection, et favorise une séparation plus logique des préoccupations.

Une caractéristique d'un itérateur entièrement implémenté est que le code qui utilise l'itérateur peut ne rien savoir du type de l'agrégat itéré.

Cette approche est très souvent utilisée. Par exemple, vous envoyez une requête SQL à la base de données et, en réponse, elle vous renvoie un itérateur (en termes SQL, on l'appelle généralement un curseur). Et avec l'aide de l'itérateur résultant, vous pouvez prendre les lignes de la réponse SQL une par une.

commande

Une commande est un modèle de conception comportemental utilisé dans la programmation orientée objet qui représente une action. L'objet de commande contient l'action elle-même et ses paramètres.

Commande

Pour appeler une méthode, vous avez généralement besoin de :

  • référence d'objet
  • nom de la méthode (référence de la méthode)
  • valeurs des paramètres de méthode
  • référence au contexte qui contient les objets utilisés

Toutes ces données doivent être regroupées dans un seul objet - Command ( command ).

Mais ce n'est pas tout : après tout, quelqu'un doit exécuter la commande. Ainsi, ce modèle comprend quatre entités supplémentaires : les commandes ( command ), un récepteur de commande ( receiver ), un appelant de commande ( invocateur ) et un client ( client ).

Un objetcommandeconnaît le récepteur et appelle la méthode du récepteur. Les valeurs des paramètres du récepteur sont stockées dans la commande. L'appelant (l'appelant) sait comment exécuter la commande et garde éventuellement une trace des commandes exécutées. L'appelant (invocateur) ne sait rien d'une commande particulière, il ne connaît que l'interface.

Les deux objets (l'objet appelant et plusieurs objets de commande) appartiennent à l'objet client. Le client décide quelles commandes exécuter et quand. Pour exécuter une commande, il passe l'objet de commande à l'appelant (invoker).

L'utilisation d'objets de commande facilite la création de composants partagés dont vous avez besoin pour déléguer ou effectuer des appels de méthode à tout moment sans avoir à connaître les méthodes de classe ou les paramètres de méthode.

L'utilisation de l'objet appelant (invocateur) vous permet de conserver un enregistrement des commandes exécutées sans que le client ait besoin de connaître ce modèle de comptabilisation (une telle comptabilisation peut être utile, par exemple, pour implémenter une commande d'annulation et de rétablissement).

Par exemple, vous écrivez un programme qui vous permet d'effectuer diverses tâches selon un calendrier. D'une part, votre programme garde une trace des tâches et gère leur lancement, d'autre part, il peut avoir plusieurs exécuteurs, chacun pouvant exécuter des commandes de son propre type. Par exemple, envoyer des SMS, envoyer des lettres, envoyer des messages à Telegram, etc.

Observateur

Observer est un modèle de conception comportemental. Implémente un mécanisme de classe qui permet à un objet de cette classe de recevoir des notifications sur les changements d'état d'autres objets et ainsi de les observer.

Observateur

Les classes auxquelles d'autres classes s'abonnent sont appelées Sujets et les classes abonnées sont appelées Observateurs .

Lors de l'implémentation du modèle Observer, les classes suivantes sont couramment utilisées :

  • Observable - une interface qui définit les méthodes d'ajout, de suppression et de notification des observateurs ;
  • Observateur - l'interface par laquelle l'observateur reçoit la notification ;
  • ConcreteObservable est une classe concrète qui implémente l' interface Observable ;
  • ConcreteObserver est une classe concrète qui implémente l' interface Observer .

Le modèle Observer est utilisé lorsque le système :

  • il y a au moins un objet qui envoie des messages ;
  • il y a au moins un destinataire de messages, et leur nombre et leur composition peuvent changer pendant l'exécution de l'application ;
  • évite les couplages forts de classes en interaction.

Ce modèle est souvent utilisé dans des situations où l'expéditeur des messages n'est pas intéressé par ce que les destinataires font des informations qui leur sont fournies.

Visiteur

Visiteur est un modèle de conception comportemental qui décrit une opération effectuée sur des objets d'autres classes. En cas de visite ou de changement, il n'est pas nécessaire de modifier les classes desservies.

Le modèle illustre la technique classique de récupération des informations de type perdues sans recourir à la double répartition vers le bas.

Visiteur

Vous devez effectuer des opérations déconnectées sur un certain nombre d'objets, mais vous devez éviter de polluer leur code. Et il n'y a aucun moyen ou désir d'interroger le type de chaque nœud et de convertir le pointeur vers le type correct avant d'effectuer l'opération souhaitée.

Le modèle doit être utilisé si :

  • il existe divers objets de différentes classes avec différentes interfaces, mais des opérations doivent être effectuées sur eux qui dépendent de classes spécifiques ;
  • sur la structure, il est nécessaire d'effectuer diverses opérations compliquant la structure ;
  • de nouvelles opérations sur la structure sont souvent ajoutées.

médiateur

Mediator est un modèle de conception comportemental qui permet à plusieurs objets d'interagir tout en maintenant un couplage lâche et en évitant que les objets aient besoin de se référer explicitement les uns aux autres.

Médiateur

Le modèle Mediator vous permet d'assurer l'interaction de nombreux objets, tout en formant un couplage lâche et en éliminant le besoin pour les objets de se référer explicitement les uns aux autres.

Le médiateur définit une interface pour échanger des informations avec des objetsCollègues, Un médiateur particulier coordonne les actions des objetsCollègues.

Chaque classe Collègue connaît son objetMédiateur, tous les collègues n'échangent des informations qu'avec un intermédiaire, en son absence ils devraient échanger des informations directement.

Collèguesenvoyer des demandes au revendeur/span> et recevoir des demandes de sa part. Le médiateur met en œuvre un comportement coopératif en transmettant chaque demande à un ou plusieursCollègues.