** Inhaltsverzeichnis ** Wenn ein Client ein Subsystem verwendet, ist dies ein Muster, das komplizierte Schnittstellen nur zu den minimal erforderlichen Schnittstellen zusammenfasst. Wenn Sie das Subsystem nicht anpassen möchten, vereinfachen Sie die Verwendung, indem Sie sich nur auf die Schnittstelle konzentrieren, auf die das Fassadenmuster angewendet wird.
Der Punkt ist, die Verbindung zwischen dem Client und dem Subsystem zu schwächen. Das Subsystem kann leicht gewechselt werden, da der Kopplungsgrad schwach ist.
Geben Sie eine einheitliche Schnittstelle für mehrere im Subsystem vorhandene Schnittstellen. Das Fassadenmuster definiert eine übergeordnete Schnittstelle, die die Verwendung von Subsystemen erleichtert.
Ich frage mich, warum nur die Klassen im Subsystem unter den Komponenten nicht richtig benannt sind ...
Erstellen Sie einfach ein neues Fenster, aber schreiben Sie Beispielcode.
Verschiedene Druckerklassenschnittstellen
Printer.kt
package facade
class Printer {
fun startUp() { print("Anlaufen") }
fun shutDown() { print("Ende") }
fun setToner(color: String) { print("Toner${color}Auf Farbe einstellen.") }
fun addPaper(num: Int) { print("Papier${num}Ich werde einen hinzufügen.") }
fun login(name: String) { print("Nutzer${name}Hat sich eingeloggt.") }
fun printOut(num: Int) { print("${num}Drucken Sie ein Blatt.") }
}
Da der Client den Drucker nur zum Drucken bedienen muss, bereiten wir ein Fenster dafür vor.
Begrenzte Schnittstelle
FacadePrinter.kt
package facade
class FacadePrinter {
private val printer = Printer()
fun printOut(num: Int) {
printer.printOut(num)
}
}
Client.kt
package facade
class Client {
init {
val printer = FacadePrinter()
printer.printOut(15)
//Keine andere Methode verfügbar
// printer.startUp()
// pritner.shutDown()
}
}
Das Ergebnis ist nicht so groß
[output]
Drucken Sie 15 Blatt.
Irgendwie habe ich das Gefühl, dass meine Wahrnehmung falsch ist. Bitte weisen Sie in den Kommentaren darauf hin.
Recommended Posts