Suche…


Bemerkungen

Ein typsicherer Builder ist ein Konzept und keine Sprachfunktion. Daher ist er nicht streng formalisiert.

Eine typische Struktur eines typsicheren Builders

Eine einzelne Builder-Funktion besteht normalerweise aus 3 Schritten:

  1. Erstellen Sie ein Objekt.
  2. Führen Sie Lambda aus, um das Objekt zu initialisieren.
  3. Fügen Sie das Objekt zur Struktur hinzu oder geben Sie es zurück.

Typensichere Builder in Kotlin-Bibliotheken

Das Konzept von typsicheren Buildern ist in einigen Kotlin-Bibliotheken und -Frameworks weit verbreitet, z. B .:

  • Anko
  • Wasabi
  • Ktor
  • Spec

Builder für typsichere Baumstruktur

Builder können als eine Reihe von Erweiterungsfunktionen definiert werden, die Lambda-Ausdrücke mit Empfängern als Argumente verwenden. In diesem Beispiel wird ein Menü eines JFrame :

import javax.swing.*

fun JFrame.menuBar(init: JMenuBar.() -> Unit) {
    val menuBar = JMenuBar()
    menuBar.init()
    setJMenuBar(menuBar)
}

fun JMenuBar.menu(caption: String, init: JMenu.() -> Unit) {
    val menu = JMenu(caption)
    menu.init()
    add(menu)
}

fun JMenu.menuItem(caption: String, init: JMenuItem.() -> Unit) {
    val menuItem = JMenuItem(caption)
    menuItem.init()
    add(menuItem)
}

Mit diesen Funktionen können Sie auf einfache Weise eine Baumstruktur von Objekten erstellen:

class MyFrame : JFrame() {
    init {
        menuBar {
            menu("Menu1") {
                menuItem("Item1") {
                    // Initialize MenuItem with some Action
                }
                menuItem("Item2") {}
            }
            menu("Menu2") {
                menuItem("Item3") {}
                menuItem("Item4") {}
            }
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow