Sobes.tech
Middle

Kannst du über einige 'Builder'-Entwurfsmuster in Android sprechen?

sobes.tech KI

Antwort von AI

Das "Builder"-Muster wird verwendet, um komplexe Objekte schrittweise zu erstellen.

Anwendungsbeispiele in Android:

  1. AlertDialog.Builder: Erstellen von Dialogen mit der Möglichkeit, Titel, Nachricht, Schaltflächen und andere Eigenschaften anzugeben.

    new AlertDialog.Builder(context)
        .setTitle("Titel")
        .setMessage("Nachrichtentext")
        .setPositiveButton("OK", (dialog, which) -> {
            // Aktion bei OK-Klick
        })
        .setNegativeButton("Abbrechen", null)
        .show();
    
  2. NotificationCompat.Builder: Erstellen von Benachrichtigungen für die Statusleiste.

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle("Benachrichtigungstitel")
        .setContentText("Benachrichtigungstext")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    
    Notification notification = builder.build();
    // Senden der Benachrichtigung über NotificationManager
    
  3. Uri.Builder: Erstellen einer URI mit verschiedenen Parametern.

    Uri builtUri = new Uri.Builder()
        .scheme("http")
        .authority("www.beispiel.de")
        .appendPath("pfad")
        .appendQueryParameter("param1", "wert1")
        .build();
    
  4. ViewModelProvider.Builder: (In Lifecycle Architecture Components) Erstellen einer Fabrik für ViewModel.

    ViewModelProvider provider = new ViewModelProvider(activity, new ViewModelProvider.AndroidViewModelFactory(application));
    MyViewModel viewModel = provider.get(MyViewModel.class);
    

Hauptvorteile der Verwendung des Builders:

  • Verbessert die Lesbarkeit des Codes beim Erstellen von Objekten mit vielen optionalen Parametern.
  • Vermeidet die Erstellung vieler Konstruktoren.
  • Ermöglicht eine schrittweise Konstruktion des Objekts.
  • Das Objekt wird erst nach Aufruf der Methode build() erstellt.