mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-23 21:13:35 +00:00
docs: update README (en/ru) to reflect adapter-based universalRegistration pattern
- Show type-safe DIAdapter-centric registration for all scenarios - Document new way to add scenarios/DI via universalRegistration<S extends Enum> - Remove legacy function-based registration/manual switching from guide - Provide examples for Dart and CLI usage with all DI adapters
This commit is contained in:
@@ -88,11 +88,48 @@ benchmark_di — это современный фреймворк для изм
|
||||
|
||||
---
|
||||
|
||||
## Как добавить свой DI
|
||||
## Универсальная регистрация зависимостей: теперь через adapter
|
||||
|
||||
В версии X.Y.Z вся логика сценариев регистрации DI-инфраструктуры локализована в adapter через метод `universalRegistration`.
|
||||
|
||||
### Использование в Dart:
|
||||
|
||||
```dart
|
||||
final di = CherrypickDIAdapter(); // или GetItAdapter(), RiverpodAdapter() и т.д.
|
||||
|
||||
di.setupDependencies(
|
||||
di.universalRegistration(
|
||||
scenario: UniversalScenario.chain,
|
||||
chainCount: 10,
|
||||
nestingDepth: 5,
|
||||
bindingMode: UniversalBindingMode.singletonStrategy,
|
||||
),
|
||||
);
|
||||
```
|
||||
- **Теперь нет необходимости вызывать глобальные функции или switch-case по типу DI!** Каждый adapter сам предоставляет типобезопасную функцию регистрации.
|
||||
|
||||
### Как добавить новый сценарий или DI:
|
||||
|
||||
- Реализуйте метод `universalRegistration<S extends Enum>(...)` в своём adapter.
|
||||
- Можно использовать как UniversalScenario, так и собственные enum-сценарии!
|
||||
- Бенчмарки CLI автоматически расширяются под ваш DI и ваши сценарии, если реализован метод-расширение.
|
||||
|
||||
### Запуск CLI (все сценарии DI Cherrypick, GetIt, Riverpod):
|
||||
|
||||
```
|
||||
dart run bin/main.dart --di=cherrypick --benchmark=all
|
||||
dart run bin/main.dart --di=getit --benchmark=all
|
||||
dart run bin/main.dart --di=riverpod --benchmark=all
|
||||
```
|
||||
|
||||
Смотрите примеры готовых adapters в `benchmark_di/lib/di_adapters/`.
|
||||
|
||||
## Преимущества
|
||||
|
||||
- **Type-safe:** Исключено использование dynamic/object в стороне DI.
|
||||
- **Масштабируемость:** Новый сценарий — просто enum + метод в adapter.
|
||||
- **Вся логика регистрации теперь только в adapter:** Добавление или изменение не затрагивает глобальные функции.
|
||||
|
||||
1. Реализуйте класс-адаптер, реализующий `DIAdapter` (`lib/di_adapters/ваш_adapter.dart`)
|
||||
2. Зарегистрируйте его в CLI (`cli/benchmark_cli.dart`)
|
||||
3. Дополните универсальную функцию регистрации (`di_universal_registration.dart`), чтобы строить цепочки для вашего DI
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user