Résumé du modèle de conception Java

Mémorandum de modèle de conception Java

  1. Iterator

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.

  1. Adapter

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.

  1. Template Method

En utilisant l'héritage, vous pouvez partager la logique générale tout en exprimant de petites différences dans les sous-classes.

  1. Factory Method

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).

  1. Singleton

Vous pouvez limiter l'instance de classe à une seule.

  1. Prototype

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.

  1. Builder

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

  1. Abstract Factory

À 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.

  1. Bridge

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.

  1. Strategy

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.

  1. Composite

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.

  1. Decorator

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

  1. Ajout d'une barrière de neutralisation de flamme
  2. Ajout d'une barrière de neutralisation de l'eau
  3. Ajout d'une barrière qui se rétablit après un certain laps de temps

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.

  1. Visitor

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.

  1. Facade

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.

  1. Mediator

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.

  1. Observer

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.

  1. Memento

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.)

  1. State

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.

  1. Flyweight

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).

  1. Proxy

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.

  1. Command

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.

  1. Interpreter

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

Résumé du modèle de conception Java
Modèle de conception Java
[Design pattern] Bibliothèque de base Java
Modèle de conception Java pour débutant (modèle de méthode d'usine)
Résumé des connaissances Java
Modèle de conception ~ Constructeur ~
Résumé des génériques Java
Modèle de conception ~ Visiteur ~
modèle de rappel java
Modèle de conception ~ Proxy ~
Modèle de conception ~ État ~
Modèle de conception ~ Stratégie ~
Modèle de conception ~ Singleton ~
Modèle de conception ~ Composite ~
Modèle de conception (2): constructeur
Modèle de conception (1): AbstractFactory
[Java] Motif singleton
Modèle de conception ~ Commande ~
Modèle de conception ~ Itérateur ~
Modèles de conception Java
Modèle de conception ~ Façade ~
Modèle de conception ~ Pont ~
Résumé du document Java 8
Modèle de conception ~ Médiateur ~
Modèle de conception ~ Décorateur ~
Modèle de conception ~ Interprète ~
Modèle de conception ~ Observateur ~
Modèle de conception ~ Prototype ~
Modèle de conception ~ Memento ~
Résumé du document Java 11
Modèle de conception ~ Adaptateur ~
Modèle de conception ~ Poids mouche ~
Mémo de modèle Java
Résumé des nouvelles fonctionnalités de Java 12
Modèle de conception C ++ (modèle TemplateMethod)
Mon modèle DAO (Java)
Modèle de conception ~ Usine abstraite ~
[Résumé] Par exemple, préparation de l'environnement Java
3ème résumé efficace de Java
Résumé des nouvelles fonctionnalités de Java 13
Java statique [Résumé personnel]
Résumé des threads sûrs ~ Java ~
Résumé de la spécialisation des primitives Java
Résumé du lien de développement Java
Résumé personnel sur Java
Résumé des nouvelles fonctionnalités de Java 10
Modèle de conception ~ Méthode de modèle ~
Modèle de générateur (Java effectif)
Résumé des nouvelles fonctionnalités de Java 14
Résumé du support Java 2018
Repenser le modèle d'expression et de conception de flux Java8 Lambda - Modèle de commande -
Résumé du mot réservé Java
Résumé approximatif du flux Java8
Repenser le modèle d'expression et de conception de flux Java8 Lambda - Modèle d'objet nul -
Repenser les modèles d'expression et de conception de flux Java8 - Modèle de méthode
Modèle de conception ~ Chaîne de responsabilité ~
Qu'est-ce que l'assertion Java? Résumé.
[Java11] Résumé du flux -Avantages du flux-
[Java] Résumé des expressions régulières
[Java] Résumé des opérateurs (opérateur)