Sobes.tech
Middle

Puoi parlare di alcuni pattern di progettazione 'builder' in Android?

sobes.tech AI

Risposta dell'AI

Il pattern "Costruttore" (Builder) viene utilizzato per creare oggetti complessi passo dopo passo.

Esempi di utilizzo in Android:

  1. AlertDialog.Builder: Creazione di dialoghi con possibilità di specificare titolo, messaggio, pulsanti e altre proprietà.

    new AlertDialog.Builder(context)
        .setTitle("Titolo")
        .setMessage("Testo del messaggio")
        .setPositiveButton("OK", (dialog, which) -> {
            // Azione al clic su OK
        })
        .setNegativeButton("Annulla", null)
        .show();
    
  2. NotificationCompat.Builder: Costruzione di notifiche per la barra di stato.

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle("Titolo della notifica")
        .setContentText("Testo della notifica")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    
    Notification notification = builder.build();
    // Invio della notifica tramite NotificationManager
    
  3. Uri.Builder: Creazione di URI con vari parametri.

    Uri builtUri = new Uri.Builder()
        .scheme("http")
        .authority("www.esempio.com")
        .appendPath("percorso")
        .appendQueryParameter("param1", "valore1")
        .build();
    
  4. ViewModelProvider.Builder: (In componenti di architettura del ciclo di vita) Costruzione di una fabbrica per ViewModel.

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

Vantaggi principali dell'uso del builder:

  • Migliora la leggibilità del codice durante la creazione di oggetti con molti parametri opzionali.
  • Permette di evitare la creazione di molteplici costruttori.
  • Garantisce la costruzione passo passo dell'oggetto.
  • L'oggetto viene creato solo dopo aver chiamato il metodo build().