Назад к вопросам
Middle
70
questionbank

Можешь рассказать о некоторых паттернах проектирования 'билдер' в Android?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Паттерн "Строитель" (Builder) используется для создания сложных объектов пошагово.

Примеры использования в Android:

  1. AlertDialog.Builder: Создание диалогов с возможностью указания заголовка, сообщения, кнопок и других свойств.

    new AlertDialog.Builder(context)
        .setTitle("Название")
        .setMessage("Текст сообщения")
        .setPositiveButton("ОК", (dialog, which) -> {
            // Действие upon OK click
        })
        .setNegativeButton("Отмена", null)
        .show();
    
  2. NotificationCompat.Builder: Построение уведомлений для статус-бара.

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle("Заголовок уведомления")
        .setContentText("Текст уведомления")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    
    Notification notification = builder.build();
    // Отправка уведомления через NotificationManager
    
  3. Uri.Builder: Создание URI с различными параметрами.

    Uri builtUri = new Uri.Builder()
        .scheme("http")
        .authority("www.example.com")
        .appendPath("path")
        .appendQueryParameter("param1", "value1")
        .build();
    
  4. ViewModelProvider.Builder: (В Lifecycle Architecture Components) Построение фабрики для ViewModel.

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

Основные преимущества использования билдера:

  • Улучшает читаемость кода при создании объектов с большим количеством необязательных параметров.
  • Позволяет избежать создания множества конструкторов.
  • Обеспечивает пошаговое построение объекта.
  • Объект создается только после вызова метода build().