Provider - это поставщик. То есть, его назначение и сфера применения - это поставка согласно заранее определенному контракту - настроек \ точек данных \ значений - для использования в определенном контексте. Где контекст - это последовательность \ область использования.
То есть Provider - это способ определить специфическое поведение в каком-то конкретном месте, без явного определения внутри каждого потребителя. Например, родительский компонент определяет для себя реализацию \ экземпляр провайдера, предоставляющий особое поведение или особый набор данных для этого компонента и его дочерних, отличный от поведения \ набора данных декларируемого для других модулей или приложения в целом.
Возвращаясь к примеру с сервисом доставки почты до почтового отделения, предположим, что ему нужно учитывать климатические зоны: обычная и крайней север.
Для этого нам понадобиться:
- Для всего приложения (основной зоны работы) опубликовать провайдер, возвращающий экземпляр сервиса, созданный со сроком хранения посылок - 3 дня
- Для компонента, работающего в зоне крайнего севера, опубликовать провайдер, возвращающий экземпляр сервиса, созданный со сроком хранения посылок - 90 дней
Провайдер - это коробочка, которая поставляет независимым компонентам какое-то поведение или данные без явного определения его внутри классов/компонентов, в которых он используется.