[GO] [Viererbande] Designmuster lernen --Adapter

Adapter - Person zum Anpassen [Ding]

** Inhaltsverzeichnis **

Zweck

Konvertieren Sie eine Schnittstelle einer Klasse in eine andere, die der Client möchte. Mit dem Adaptermuster können Sie Klassen kombinieren, die in der Benutzeroberfläche nicht miteinander kompatibel sind.

Komponente

-Target Definieren Sie die Schnittstelle der Klasse nach dem Kombinieren. ・ Client-Benutzerklasse ・ Adaptee-Klasse, die Sie kombinieren möchten -Klasse erstellt durch Kombinieren der Adapter Adaptee-Klasse

Implementierung

Als ich den Zweck las und dachte: "Ich kann das tun", war es, als würde eine Klasse mehrere Klassen erben und verschiedene Klassen zusammenstellen. Der Beispielcode des GoF-Buches ist im Wesentlichen in C ++ geschrieben, sodass er anscheinend nicht mit Kotlin (Original Java) realisiert werden kann. Obwohl es das erste Muster ist, das sich auf die Struktur bezieht.

Nach vielen Recherchen gab es einige Seiten, die das Adaptermuster in Java realisierten (oder versuchen). is-eine BeziehungOderhas-eine BeziehungEs kann durch zwei Dinge realisiert werden. Es wurde auf jeder Seite geschrieben, aber ist es wirklich ein Adaptermuster ...? Ich denke.

Zum Beispiel sind die TextView-Klasse, die Rect-Klasse und die ColorBackground-Klasse im Standard-Toolkit enthalten, aber das jetzt zu erstellende System kann abgerundete Ecken haben. Ich erkenne, dass dieses Muster verwendet wird, wenn Sie eine Textansicht benötigen, die die Hintergrundfarbe ändern kann !!!

Wenn es mit Java realisiert werden kann, kann die folgende Klasse erstellt werden.

ColorRectTextView.java



public class ColorRectTextView extends TextView, Rect, ColorBackground {
    //Methode zum Abrunden der Ecken und Ändern der Hintergrundfarbe
}

Java erlaubt jedoch keine Mehrfachvererbung. Wenn dies durch `ist-ist eine Beziehung` und `hat-eine Beziehung` realisiert

IsAColorRectTextView.java


public class IsAColorRectTextView extends TextView implements RectInterface, ColorBackgroundInterface {
    //Implementieren Sie die von RectInterface und ColorBackgroundInterface definierten Methoden
}

Form wie

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()
    }
}

Es sieht aus wie eine bloße Vererbung und Delegation.

Recommended Posts

[Viererbande] Designmuster lernen --Adapter
[Viererbande] Designmuster lernen
[Viererbande] Design Pattern Learning --Decorator
[Viererbande] Designmuster lernen --Besucher
[Viererbande] Design Pattern Learning - Vermittler
[Viererbande] Designmuster lernen - Fassade
[Viererbande] Design Pattern Learning - Composite
[Viererbande] Designmuster lernen - Andenken
[Viererbande] Designmuster lernen - Staat
[Vierergruppe] Design Pattern Learning - Interpreter
[Viererbande] Design Pattern Learning - Builder
[Viererbande] Designmuster lernen - Brücke
[Viererbande] Designmuster lernen --Proxy
[Viererbande] Design Pattern Learning - Strategie
[Viererbande] Design Pattern Learning - Beobachter
[Viererbande] Designmuster lernen - Befehl
[Viererbande] Designmuster lernen - Fluggewicht
[Viererbande] Designmusterlernen - Abstract Factory
[Viererbande] Designmuster lernen - Fabrikmethode
[Viererbande] Designmuster lernen - Kette der Verantwortung
[Viererbande] Design Pattern Learning - Template-Methode
Gang of Four (GoF) -Muster in Python
Lernen Sie das Entwurfsmuster "Adapter" mit Python
Entwurfsmuster #Builder
Entwurfsmuster #Decorator
Lernen der Mustererkennung im Video Teil 1 Bereich der Mustererkennung
Entwurfsmuster #Observer
Entwurfsmuster #Facade
Entwurfsmuster #Strategie
Entwurfsmuster #Singleton
Entwurfsmuster #Proxy
Ich habe ein Designmuster in der Kotlin Adapter Edition geschrieben
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python
Entwurfsmuster #Factory-Methode
Deep Learning 1 Übung des Deep Learning
Entwurfsmuster # Template-Methode
Die Geschichte, dass GoF-Designmuster nichts anderes sind als "Einführung abstrakter Ebenen"