La boucle peut être réalisée indépendamment des données. Qu'il s'agisse d'une liste, d'un tableau, d'un ensemble ou autre, c'est un appel similaire.
Lorsque vous souhaitez utiliser une fonction implémentée dans une classe existante dans une autre classe, effectuez une conversion de type afin que la fonction puisse être utilisée dans le type que vous souhaitez utiliser.
En utilisant l'héritage, vous pouvez partager la logique générale tout en exprimant de petites différences dans les sous-classes.
En implémentant le programme principal à l'aide de l'interface commune Factory et de l'interface produit, le comportement du produit généré peut être modifié simplement en changeant le type spécifique d'usine (implémenté dans l'interface).
Vous pouvez limiter l'instance de classe à une seule.
En enregistrant au préalable l'instance de chaque classe dans l'organisateur (rôle Prototype), il est possible de copier et de créer l'instance nécessaire à partir de l'instance enregistrée dans l'organisateur.
Elle est similaire à la méthode de modèle, mais elle utilise la délégation plutôt que l'héritage et utilise les méthodes de la classe qui représentent les différences subtiles pour créer la logique générale. En conséquence, la logique peut être partagée
À utiliser lorsque vous souhaitez créer quelque chose (par exemple, un fichier html). L'interface de la méthode qui crée les parties qui composent la chose que vous voulez faire est fixe, et vous appelez la méthode autant de fois que vous le souhaitez avec n'importe quel argument pour créer ce que vous voulez faire. En laissant l'implémentation de la méthode qui crée les parties qui composent ce que vous voulez faire à la classe d'implémentation, vous pouvez exprimer la différence et la rendre résistante aux changements. Par exemple, en créant html. Lorsque vous cliquez sur une partie de lien, vous pouvez indiquer si vous souhaitez effectuer une transition dans le même onglet ou ouvrir un lien dans un nouvel onglet en modifiant la classe d'implémentation.
Vous pouvez séparer la classe de fonctions et la classe d'implémentation (petites différences). Autrement dit, la classe de fonction construit la logique à l'aide d'une interface commune pour la classe d'implémentation. En faisant cela, lors de l'ajout d'une fonction, la classe de fonctions doit être ajoutée, et si le comportement (implémentation) doit être modifié, la classe d'implémentation doit être modifiée.
Seul l'algorithme peut être commuté par délégation. Cela permet de changer facilement la méthode de calcul de sortie pour l'entrée. Par exemple, «algorithme rapide mais inexact» et «algorithme lent mais précis» peuvent être utilisés correctement en fonction de la situation.
Permet d'identifier le conteneur (pluriel) et le contenu (unique). Par exemple, dans l'implémentation de HashMap, le contenu (unique) correspond essentiellement à chaque valeur de hachage, mais lorsqu'une collision se produit, cela correspond en mettant un conteneur (au pluriel) dans la valeur de hachage.
Les classes qui implémentent la même interface peuvent ajouter des fonctions autant de fois qu'elles le souhaitent par délégation. L'image est pour la personne qui a mis le bouclier
En y réfléchissant, l'image est que lorsque vous l'ajoutez, vous pouvez l'ajouter telle quelle à l'état précédent, et finalement une personne qui a acquis toutes les fonctions naîtra. Ce modèle est utilisé par InputStreamReader, BufferReader, FileReader, etc. de java.io.
Structure et traitement des données séparés. Lorsqu'une classe qui effectue le traitement (ce qu'il faut faire dépend de l'implémentation) est donnée à la classe qui exprime la structure de données, la méthode qui effectue le traitement est appelée par délégation et les données sont traitées.
14. Chain of Responsibility
Renversez le processus par délégation. Le rôle de Handler (rôle de traitement) n'effectue que le traitement qui peut être fait par soi-même, et confie le traitement à la classe suivante s'il ne peut pas être conservé entre ses mains. Il est également possible de changer la classe qui traite pendant le fonctionnement du programme. Comme inconvénient, le traitement peut être lent.
Pour réduire le nombre d'interfaces et exprimer une fonction, une méthode doit être appelée. Le processus d'appel d'autres classes spécifiques est concentré dans le rôle Façade.
Combinez la logique de changement d'état en une seule classe. En utilisant la délégation, le traitement de la classe cible est appelé en fonction du changement d'état.
Efficace pour décrire le traitement en fonction des changements d'état. Le rôle de chaque observateur (observateur) est enregistré dans le rôle de sujet, et lorsque l'état du sujet change, la méthode cible de l'observateur est appelée par délégation.
Utilisé lorsque vous souhaitez enregistrer l'état de l'instance. Le rôle Originator crée un rôle Memento lorsqu'il souhaite sauvegarder son état et, à la discrétion du rôle Caretaker, il revient à l'état précédemment enregistré dans Memento. À ce stade, le rôle de Memento élargit l'interface pour le rôle d'Organisateur (comme rendre le paquet le même) et rétrécit l'interface pour le rôle de Caretaker afin que l'encapsulation ne soit pas interrompue. (Réduisez les méthodes qui peuvent être appelées.)
Gérez l'état par classe. En surchargeant, il est possible de décrire le traitement basé sur l'état sans utiliser de branchement conditionnel tel que l'instruction if.
Partagez l'instance et ne gaspillez pas de nouvelles. Lorsqu'une instance est requise, elle est créée à partir de la classe Factory, et dans la classe Factory, si l'instance existe déjà, l'instance est utilisée telle quelle. Cela peut économiser le temps nécessaire pour la mémoire et le nouveau (temps requis pour le traitement du constructeur).
Lorsque le rôle Sujet est une classe qui effectue un traitement intensif, un rôle Proxy est préparé pour le remplacer. Le rôle Proxy et le rôle Subject partagent une interface, et le rôle Proxy effectue le traitement autant que possible, de sorte que le rôle Subject ne soit pas utilisé avant la dernière minute. Comme un proxy HTTP, l'image est qu'en réponse à une demande d'un client, les informations sont extraites du serveur uniquement lorsque le cache n'existe pas.
Gérez les instructions de traitement comme une seule instance. La gestion de l'historique des commandes devient possible. Plus précisément, préparez une classe qui décrit des instructions détaillées et une classe qui enregistre et gère ces instructions dans java.util.Stack. Les deux utilisent la même interface.
Créez un langage simple qui correspond à votre objectif en utilisant le langage Java. Vous pouvez écrire des expressions régulières et des langages de traitement par lots.
Recommended Posts