mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-24 05:25:19 +00:00
implemented resolvers
This commit is contained in:
15
lib/resolvers/factory_resolver.dart
Normal file
15
lib/resolvers/factory_resolver.dart
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import 'package:dart_di/resolvers/resolver.dart';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Разрешает зависимость для фабричной функции
|
||||||
|
*/
|
||||||
|
class FactoryResolver<T> extends Resolver<T> {
|
||||||
|
Function _factory;
|
||||||
|
|
||||||
|
FactoryResolver(this._factory);
|
||||||
|
|
||||||
|
@override
|
||||||
|
T resolve() {
|
||||||
|
return _factory();
|
||||||
|
}
|
||||||
|
}
|
||||||
11
lib/resolvers/resolver.dart
Normal file
11
lib/resolvers/resolver.dart
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* Resolver - это абстракция, которая определяет,
|
||||||
|
* как контейнер будет разрешать зависимость
|
||||||
|
*/
|
||||||
|
abstract class Resolver<T> {
|
||||||
|
/**
|
||||||
|
* Разрешает зависимость типа [T]
|
||||||
|
* @return - возвращает объект типа [T]
|
||||||
|
*/
|
||||||
|
T resolve();
|
||||||
|
}
|
||||||
16
lib/resolvers/singelton_resolver.dart
Normal file
16
lib/resolvers/singelton_resolver.dart
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import 'package:dart_di/resolvers/resolver.dart';
|
||||||
|
|
||||||
|
class SingletonResolver<T> extends Resolver<T> {
|
||||||
|
Resolver<T> _decoratedResolver;
|
||||||
|
T _value = null;
|
||||||
|
|
||||||
|
SingletonResolver(this._decoratedResolver);
|
||||||
|
|
||||||
|
@override
|
||||||
|
T resolve() {
|
||||||
|
if (_value == null) {
|
||||||
|
_value = _decoratedResolver.resolve();
|
||||||
|
}
|
||||||
|
return _value;
|
||||||
|
}
|
||||||
|
}
|
||||||
15
lib/resolvers/value_resolver.dart
Normal file
15
lib/resolvers/value_resolver.dart
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import 'package:dart_di/resolvers/resolver.dart';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Разрешает зависимость для значения
|
||||||
|
*/
|
||||||
|
class ValueResolver<T> extends Resolver<T> {
|
||||||
|
T _value;
|
||||||
|
|
||||||
|
ValueResolver(this._value);
|
||||||
|
|
||||||
|
@override
|
||||||
|
T resolve() {
|
||||||
|
return _value;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user