[GO] Ich habe ein Designmuster in der Kotlin Adapter Edition geschrieben

Erlernen des Konzepts der Schnittstelle und der Wiederverwendbarkeit von Objekten, die für die Objektorientierung wichtig sind ["Einführung in in Java-Sprache erlernte Entwurfsmuster"](https://www.amazon.co.jp/%E5%A2%97% E8% A3% 9C% E6% 94% B9% E8% A8% 82% E7% 89% 88Java% E8% A8% 80% E8% AA% 9E% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% B6% E3% 82% A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3% E5% 85% A5% E9% 96% 80-% E7% B5% 90% E5% 9F% 8E-% E6% B5% A9 / dp / 4797327030 / ref = sr_1_1? % E3% 82% BF% E3% 82% AB% E3% 83% 8A & Schlüsselwörter = Java% E8% A8% 80% E8% AA% 9E% E3% 81% A7% E5% AD% A6% E3% 81% B6 % E3% 83% 87% E3% 82% B6% E3% 82% A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3% E5 Ich habe% 85% A5% E9% 96% 80 & qid = 1559563427 & s = gateway & sr = 8-1) kennengelernt und mich entschieden, in Kotlin zu schreiben, während ich in Java war. Dieses Mal werde ich über Adapter schreiben.

Was ist ein Adapter?

Es ist ein Entwurfsmuster, das die Lücke zwischen dem, was bereits bereitgestellt wurde, und dem, was benötigt wird, schließt und auch als Wrapper-Muster bezeichnet wird. Ein Rollenmuster, das die ursprüngliche Klasse umschließt und die erforderlichen Spezifikationen erfüllt.

Zwei Arten der Implementierung von Adaptermustern

  1. Muster mit Vererbung in der Klasse
  2. Muster mit Delegation in Instanz Es werden zwei Typen vorgestellt, aber dieses Mal möchte ich ein Muster mit Vererbung in der ersten Klasse implementieren.

Muster mit Vererbung in der Klasse

Ära Klasse

Diese Klasse wird als die ursprünglich bereitgestellte Klasse angenommen. Beim Erben in Kotlin wird die Klasse als Java-Final behandelt. Daher muss sie geöffnet und geerbt werden. Geben Sie daher open vor der Klassendefinition an Referenz: https://www.atmarkit.co.jp/ait/articles/1804/24/news008.html

Era.java


class Era{
	private int year;
	public Era(int year) {
		this.year = year;
	}
	
	public int yearToReiwa() {
		return year - 2018;
	}
	
	public int yearToHeisei() {
		return year - 1988;
	}
}

Era.kt


open class Era(private val year: Int){
    fun yearToReiwa(): Int = this.year - 2018
    fun yearToHeisei(): Int = this.year - 1988
}

Druckoberfläche

Dies ist eine Schnittstelle, die die als Spezifikation erforderlichen Anforderungen erfüllt. Verwenden Sie in kolin Unit, wenn Sie in Java void angeben

Print.java


interface Print{
	public abstract void printAsReiwa();
	public abstract void printAsHeisei();
}

Print.kt


interface Print{
    fun printAsReiwa(): Unit
    fun printAsHeisei(): Unit
}

PrintEra-Klasse

Diese Klasse wird zu einem Adapter und umschließt die Era-Klasse, um die erforderlichen Anforderungen zu erfüllen. Der Punkt ist, dass die erforderlichen Spezifikationen implementiert werden können, ohne die Implementierung der Era-Klasse zu ändern. Geben Sie beim Erben ": Era" an und verwenden Sie beim Aufrufen des geerbten Konstruktors ": Era (Jahr)".

PrintEra.java


class PrintEra extends Era implements Print{
	public PrintEra(int year) {
		super(year);
	}
	public void printAsHeisei() {
		System.out.println("Heisei" + yearToHeisei() + "Jahr");
	}
	public void printAsReiwa() {
		if(yearToReiwa() == 1) System.out.println("Erstes Jahr von Reiwa");
		else System.out.println("Reiwa" + yearToReiwa() + "Jahr");	
	}
}

PrintEra.kt


class PrintEra(private val year: Int) :Era(year), Print{
    override fun printAsHeisei(): Unit = println("Heisei" + yearToHeisei() + "Jahr")
    override fun printAsReiwa() {
        if (yearToReiwa() == 1) println("Erstes Jahr von Reiwa") else println("Reiwa" + yearToReiwa() + "Jahr")
    }
}

Hauptklasse

Dies ist die Hauptklasse, die die obige Klasse tatsächlich betreibt.

AdapterSample.java


public class AdapterSample {
	public static void main(String[] args) {
		Print p = new PrintEra(2019);
		p.printAsHeisei();
		p.printAsReiwa();
	}
}

AdapterSample.kt


fun main(args: Array<String>){
    val p: Print = PrintEra(2019)
    p.printAsHeisei()
    p.printAsReiwa()
}

Ausführungsergebnis


2019
Erstes Jahr von Reiwa

Klassen Diagramm

image.png

Impressionen

Referenz

Es war sehr leicht zu lesen und zu verstehen, wenn man sich auf Folgendes bezog.

Einführung in Kotlin für Java-Programmierer

Recommended Posts

Ich habe ein Designmuster in der Kotlin Adapter Edition geschrieben
Ich habe ein Designmuster in der Kotlin Factory Edition geschrieben
Ich habe ein Designmuster in der Kotlin Builder Edition geschrieben
Ich habe ein Designmuster in der Kotlin Singleton Edition geschrieben
Ich habe ein Designmuster in Kotlin geschrieben, das von Iterator bearbeitet wurde
Ich habe ein Designmuster in der Kotlin Template Edition geschrieben
Ich habe ein Designmuster in der Kotlin Prototype Edition geschrieben
Entwurfsmuster #Adapter
Lernen Sie das Entwurfsmuster "Adapter" mit Python
Ich habe eine Klasse in Python3 und Java geschrieben
Ich habe einen japanischen Parser auf Japanisch mit Pyparsing geschrieben.
Ich habe Python auf Japanisch geschrieben
Ich habe ein Skript geschrieben, um eine beliebte Seite in Japan zu bekommen
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Ich bekomme einen UnicodeDecodeError mit mecab-python3
Ich erhalte einen KeyError in pyclustering.xmeans
Ich habe eine Funktion zum Laden des Git-Erweiterungsskripts in Python geschrieben
Ich habe Fizz Buzz in Python geschrieben
Ich habe Gray Scale mit Pytorch geschrieben
Ich habe ein Skript geschrieben, um Webseiten-Links in Python zu extrahieren
Ich habe die Warteschlange in Python geschrieben
Ich habe an AtCoder teilgenommen (ABC169 Edition)
Ich habe den Stack in Python geschrieben
Ich habe einen Code geschrieben, um die Quaternion mit Python in einen Ölerwinkel vom Typ z-y-x umzuwandeln
[Python] Ich habe gewaltsam eine kurze Funktion zur Erzeugung von Parlin-Geräuschen in Numpy geschrieben.
Ich habe FizzBuzz in Python mit der Support Vector Machine (Bibliothek LIVSVM) geschrieben.
Lernen Sie das Entwurfsmuster "Prototype" mit Python
Lernen Sie das Entwurfsmuster "Builder" mit Python
Ich möchte in der Einschlussnotation drucken
Lernen Sie das Designmuster "Flyweight" in Python
Ich habe ein Pay-Management-Programm in Python erstellt!
Lernen Sie das Entwurfsmuster "Observer" in Python
Lernen Sie das Entwurfsmuster "Memento" mit Python
Lernen Sie das Entwurfsmuster "Befehl" in Python
Lernen Sie das Entwurfsmuster "Besucher" mit Python
Lernen Sie das Entwurfsmuster "Bridge" mit Python
Lernen Sie das Entwurfsmuster "Mediator" mit Python
Lernen Sie das Designmuster "Decorator" mit Python
Schriftliche Auswahlsortierung in C.
Lernen Sie das Entwurfsmuster "Iterator" mit Python
Lernen Sie das Entwurfsmuster "Strategie" mit Python
Lernen Sie das Entwurfsmuster "Composite" mit Python
Lernen Sie das Entwurfsmuster "State" in Python
Ich habe Project Euler 1 in einem Liner geschrieben.
Startete Node.js in einer virtuellen Umgebung
Ich habe ein Passwort-Tool in Python erstellt.
Ich habe den Gleitflügel in der Schöpfung geschrieben.
[Viererbande] Designmuster lernen --Adapter
Ich habe ein Diagramm wie R glmnet in Python für die spärliche Modellierung mit Lasso geschrieben
[Basic Information Engineer Examination] Ich habe einen linearen Suchalgorithmus in Python geschrieben.
Ich habe ein PyPI-Modul geschrieben, das den Parameterstil in Pythons sqlite3-Modul erweitert
Wenn ich einen Chrom-Treiberfehler in Selenium bekomme
Lernen Sie das Entwurfsmuster "Abstract Factory" mit Python
Löschen Sie Daten in einem Muster mit Redis Cluster
Lernen Sie das Entwurfsmuster "Vorlagenmethode" in Python
Ich möchte mit Python ein Fenster erstellen
Ich habe versucht, mit Python ein Tippspiel zu spielen
Lernen Sie das Entwurfsmuster "Factory Method" in Python
Geschrieben "Einführung in die Effektüberprüfung" in Python
Ich habe ein Skript geschrieben, um ein WordPress-Plug-In hochzuladen