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