[GO] [Gang of Four] Apprentissage des modèles de conception - Adaptateur

Adaptateur --Personne à adapter [chose]

** Table des matières **

Objectif

Convertissez une interface d'une classe en une autre que le client souhaite. Le modèle d'adaptateur vous permet de combiner des classes incompatibles les unes avec les autres dans l'interface.

Composant

-Target Définit l'interface de la classe après la combinaison. ・ Classe d'utilisateur client ・ Classe Adaptee que vous souhaitez combiner -Classe créée en combinant la classe Adapter Adaptee

la mise en oeuvre

Quand j'ai lu le but et j'ai pensé: «Je peux faire ça», c'était comme si une classe hérite de plusieurs classes et assemble plusieurs classes. L'exemple de code du livre GoF est essentiellement écrit en C ++, il semble donc qu'il ne puisse pas être réalisé avec kotlin (Java d'origine). Même s'il s'agit du premier motif lié à la structure.

Après de nombreuses recherches, certaines pages ont réalisé (ou essayez-vous de) le modèle d'adaptateur en java. is-une relationOuhas-une relationCela peut être réalisé par deux choses. Il a été écrit sur chaque page, mais est-ce vraiment un modèle d'adaptateur ...? Je pense.

Par exemple, la classe TextView`, la classe Rect '' et la classe ColorBackground` `` sont incluses dans la boîte à outils standard, mais le système à créer a maintenant des coins arrondis. Je reconnais que ce modèle est utilisé lorsque vous avez besoin d'une vue de texte qui peut changer la couleur d'arrière-plan !!!

Si cela peut être réalisé avec java, la classe suivante peut être créée.

ColorRectTextView.java



public class ColorRectTextView extends TextView, Rect, ColorBackground {
    //Méthode pour arrondir les coins et changer la couleur d'arrière-plan
}

Cependant, java n'autorise pas l'héritage multiple. Quand ceci est réalisé par "est-une relation" "ou" a-une relation ""

IsAColorRectTextView.java


public class IsAColorRectTextView extends TextView implements RectInterface, ColorBackgroundInterface {
    //Implémentez les méthodes définies par RectInterface et ColorBackgroundInterface
}

Forme comme

HasAColorRectTextView.java


public class HasAColorRectTextView extends TextView {
    private Rect rect;
    private ColorBackground colorBackGround;

    public HasAColorRectTextView(Rect rect, ColorBackground colorBackGround) {
        this.rect = rect;
        this.colorBackGround = colorBackGround;
    }

    public void rectMethod() {
        rect.rectMethod()
    }

    public void colorBackGroundMethod() {
        colorBackGround.colorBackGroundMethod()
    }
}

Cela ressemble à un simple héritage et délégation.

Recommended Posts

[Gang of Four] Apprentissage des modèles de conception - Adaptateur
[Gang of Four] Apprentissage des modèles de conception
[Gang of Four] Apprentissage des modèles de conception - Décorateur
[Gang of Four] Apprentissage des modèles de conception - Visiteur
[Gang of Four] Apprentissage des modèles de conception - Médiateur
[Gang of Four] Apprentissage des modèles de conception - Façade
[Gang of Four] Apprentissage des modèles de conception - Composite
[Gang of Four] Apprentissage des modèles de conception --Mémento
[Gang of Four] Apprentissage des modèles de conception - État
[Gang of Four] Apprentissage des modèles de conception - Interprétation
[Gang of Four] Apprentissage des modèles de conception - Constructeur
[Gang of Four] Apprentissage des modèles de conception - Pont
[Gang of Four] Apprentissage des modèles de conception - Proxy
[Gang of Four] Apprentissage des modèles de conception - Stratégie
[Gang of Four] Apprentissage des modèles de conception --Observer
[Gang of Four] Apprentissage des modèles de conception - Commande
[Gang of Four] Apprentissage des modèles de conception - Poids du vol
[Gang of Four] Apprentissage des modèles de conception - Usine abstraite
[Gang of Four] Apprentissage des modèles de conception - Méthode d'usine
[Gang of Four] Apprentissage des modèles de conception - Chaîne de responsabilité
[Gang of Four] Apprentissage des modèles de conception - Méthode du modèle
Modèles Gang of Four (GoF) en Python
Apprenez le modèle de conception "Adapter" avec Python
Modèle de conception #Builder
Modèle de conception #Decorator
Apprentissage de la reconnaissance de formes en vidéo Partie 1 Champ de reconnaissance de formes
Modèle de conception #Observer
Modèle de conception #Facade
Modèle de conception #Strategy
Modèle de conception #Singleton
Modèle de conception #Proxy
J'ai écrit un modèle de conception dans l'édition Kotlin Adapter
Apprenez le modèle de conception «Chaîne de responsabilité» en Python
Design Pattern #Factory, méthode
Deep learning 1 Pratique du deep learning
Design Pattern #Template, méthode
L'histoire selon laquelle les modèles de conception du GoF ne sont rien de plus qu'une «introduction de couches abstraites»