Sobes.tech
Middle

Pouvez-vous parler de certains modèles de conception 'builder' en Android?

sobes.tech IA

Réponse de l'IA

Le motif "Constructeur" (Builder) est utilisé pour créer des objets complexes étape par étape.

Exemples d'utilisation en Android :

  1. AlertDialog.Builder : Création de dialogues avec la possibilité de spécifier le titre, le message, les boutons et d'autres propriétés.

    new AlertDialog.Builder(context)
        .setTitle("Titre")
        .setMessage("Texte du message")
        .setPositiveButton("OK", (dialog, which) -> {
            // Action lors du clic sur OK
        })
        .setNegativeButton("Annuler", null)
        .show();
    
  2. NotificationCompat.Builder : Construction de notifications pour la barre d'état.

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle("Titre de la notification")
        .setContentText("Texte de la notification")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    
    Notification notification = builder.build();
    // Envoi de la notification via NotificationManager
    
  3. Uri.Builder : Création d'URI avec différents paramètres.

    Uri builtUri = new Uri.Builder()
        .scheme("http")
        .authority("www.exemple.com")
        .appendPath("chemin")
        .appendQueryParameter("param1", "valeur1")
        .build();
    
  4. ViewModelProvider.Builder : (Dans les composants d'architecture du cycle de vie) Construction d'une fabrique pour ViewModel.

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

Principaux avantages de l'utilisation du builder :

  • Améliore la lisibilité du code lors de la création d'objets avec de nombreux paramètres optionnels.
  • Permet d'éviter la création de nombreux constructeurs.
  • Assure une construction étape par étape de l'objet.
  • L'objet n'est créé qu'après l'appel de la méthode build().