Цепочка методов

Цепочка методов (method chaining) — это приём, позволяющий вызывать несколько методов подряд у одного объекта, не создавая промежуточных переменных. В библиотеке iziToast этот подход применяется ограниченно, но понимание его принципа важно для построения удобных и читаемых конфигураций уведомлений.


Общая идея цепочки методов

Цепочка методов основана на том, что каждый метод возвращает объект, у которого можно сразу вызвать следующий метод. В классическом виде это выглядит так:

object.method1().method2().method3();

Каждый следующий вызов выполняется над результатом предыдущего.


Особенности реализации в iziToast

Библиотека iziToast не строится вокруг полноценного fluent-интерфейса (как, например, jQuery), однако частично поддерживает композицию вызовов через:

  • передачу конфигурации объектом
  • глобальные настройки через iziToast.settings
  • методы управления уведомлениями

Цепочка в чистом виде встречается реже, но логика последовательного применения настроек и вызовов сохраняется.


Использование настроек как псевдо-цепочки

Основной способ «связать» несколько действий — это последовательная настройка через объект:

iziToast.show({
    title: 'Заголовок',
    message: 'Сообщение',
    position: 'topRight',
    timeout: 5000,
    color: 'blue'
});

Здесь вместо цепочки используется декларативный подход — все параметры задаются сразу.


Глобальная конфигурация и её влияние

Метод iziToast.settings задаёт базовые параметры, которые применяются ко всем последующим уведомлениям:

iziToast.settings({
    timeout: 3000,
    position: 'bottomLeft',
    transitionIn: 'fadeIn'
});

После этого каждый вызов iziToast.show() будет использовать эти настройки по умолчанию.

Фактически это заменяет цепочку:

// Условная цепочка (если бы она существовала)
iziToast
    .setTimeout(3000)
    .setPosition('bottomLeft')
    .setTransition('fadeIn')
    .show();

Комбинирование вызовов методов

В реальных сценариях методы iziToast вызываются последовательно:

iziToast.settings({
    timeout: 2000
});

iziToast.success({
    title: 'OK',
    message: 'Успешно'
});

iziToast.error({
    title: 'Ошибка',
    message: 'Что-то пошло не так'
});

Здесь логика аналогична цепочке: сначала задаётся состояние, затем выполняются действия.


Управление уведомлениями

Некоторые методы позволяют управлять уже созданными уведомлениями:

iziToast.hide({}, document.querySelector('.iziToast'));

Или:

iziToast.destroy();

Эти методы можно логически объединять:

iziToast.hide({}, element);
iziToast.show({ message: 'Новое сообщение' });

Хотя синтаксической цепочки нет, последовательность действий сохраняет тот же смысл.


Создание собственной цепочки

При необходимости можно обернуть iziToast в собственный интерфейс с поддержкой chaining:

class ToastBuilder {
    constructor() {
        this.options = {};
    }

    title(text) {
        this.options.title = text;
        return this;
    }

    message(text) {
        this.options.message = text;
        return this;
    }

    color(color) {
        this.options.color = color;
        return this;
    }

    show() {
        iziToast.show(this.options);
    }
}

Использование:

new ToastBuilder()
    .title('Заголовок')
    .message('Текст')
    .color('green')
    .show();

Такой подход позволяет реализовать полноценную цепочку методов поверх библиотеки.


Преимущества цепочки методов

  • Читаемость — последовательные действия описаны линейно
  • Компактность — отсутствие лишних переменных
  • Гибкость — легко добавлять новые шаги

Ограничения в контексте iziToast

  • библиотека не возвращает объект для chaining из методов вроде show, success, error
  • большинство настроек задаётся через объект, а не через методы
  • управление уведомлениями происходит отдельными вызовами

Практические рекомендации

  • использовать объект конфигурации как основной способ задания параметров
  • применять iziToast.settings для глобальных значений
  • при необходимости chaining — реализовывать собственный обёрточный класс
  • избегать усложнения логики, если стандартный API уже покрывает задачу

Сравнение подходов

Без цепочки:

iziToast.show({
    title: 'A',
    message: 'B'
});

С пользовательской цепочкой:

builder.title('A').message('B').show();

Первый вариант проще и нативен для библиотеки, второй — удобен при сложной динамической логике.


Когда цепочка действительно полезна

  • динамическая сборка уведомления
  • повторное использование конфигурации
  • создание DSL (domain-specific language) поверх iziToast
  • работа с большим количеством параметров

Итоговая архитектура использования

  1. Глобальные настройки (settings)
  2. Локальные параметры (show, success, error)
  3. Управление (hide, destroy)
  4. При необходимости — обёртка с chaining

Такой подход позволяет сохранить баланс между простотой использования iziToast и гибкостью архитектуры.