Sobes.tech
Middle

Kun je praten over enkele 'builder'-ontwerppatronen in Android?

sobes.tech AI

Antwoord van AI

Het "Builder"-patroon wordt gebruikt om complexe objecten stapsgewijs te maken.

Voorbeelden van gebruik in Android:

  1. AlertDialog.Builder: Het maken van dialoogvensters met de mogelijkheid om een titel, bericht, knoppen en andere eigenschappen op te geven.

    new AlertDialog.Builder(context)
        .setTitle("Titel")
        .setMessage("Berichttekst")
        .setPositiveButton("OK", (dialog, which) -> {
            // Actie bij OK-klik
        })
        .setNegativeButton("Annuleren", null)
        .show();
    
  2. NotificationCompat.Builder: Het bouwen van meldingen voor de statusbalk.

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle("Titel van de melding")
        .setContentText("Tekst van de melding")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    
    Notification notification = builder.build();
    // Versturen van de melding via NotificationManager
    
  3. Uri.Builder: Het maken van URI's met verschillende parameters.

    Uri builtUri = new Uri.Builder()
        .scheme("http")
        .authority("www.voorbeeld.com")
        .appendPath("pad")
        .appendQueryParameter("param1", "waarde1")
        .build();
    
  4. ViewModelProvider.Builder: (In Lifecycle Architecture Components) Het bouwen van een fabriek voor ViewModel.

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

Belangrijkste voordelen van het gebruik van de builder:

  • Verbetert de leesbaarheid van de code bij het maken van objecten met veel optionele parameters.
  • Voorkomt het maken van veel constructeurs.
  • Zorgt voor stapsgewijze constructie van het object.
  • Het object wordt pas gemaakt nadat de build()-methode is aangeroepen.