Sobes.tech
Middle

¿Puedes hablar sobre algunos patrones de diseño 'builder' en Android?

sobes.tech AI

Respuesta de la IA

El patrón "Constructor" (Builder) se utiliza para crear objetos complejos paso a paso.

Ejemplos de uso en Android:

  1. AlertDialog.Builder: Creación de diálogos con la posibilidad de especificar título, mensaje, botones y otras propiedades.

    new AlertDialog.Builder(context)
        .setTitle("Título")
        .setMessage("Texto del mensaje")
        .setPositiveButton("OK", (dialog, which) -> {
            // Acción al hacer clic en OK
        })
        .setNegativeButton("Cancelar", null)
        .show();
    
  2. NotificationCompat.Builder: Construcción de notificaciones para la barra de estado.

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle("Título de la notificación")
        .setContentText("Texto de la notificación")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    
    Notification notification = builder.build();
    // Envío de la notificación a través de NotificationManager
    
  3. Uri.Builder: Creación de URI con diferentes parámetros.

    Uri builtUri = new Uri.Builder()
        .scheme("http")
        .authority("www.ejemplo.com")
        .appendPath("ruta")
        .appendQueryParameter("param1", "valor1")
        .build();
    
  4. ViewModelProvider.Builder: (En los componentes de arquitectura del ciclo de vida) Construcción de una fábrica para ViewModel.

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

Ventajas principales del uso del constructor:

  • Mejora la legibilidad del código al crear objetos con muchos parámetros opcionales.
  • Permite evitar la creación de múltiples constructores.
  • Proporciona una construcción paso a paso del objeto.
  • El objeto se crea solo después de llamar al método build().