implemented resolvers

This commit is contained in:
Sergey Penkovsky
2020-06-27 07:14:22 +03:00
parent 5b06317693
commit b6b2aa6c49
4 changed files with 57 additions and 0 deletions

View 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();
}
}

View File

@@ -0,0 +1,11 @@
/**
* Resolver - это абстракция, которая определяет,
* как контейнер будет разрешать зависимость
*/
abstract class Resolver<T> {
/**
* Разрешает зависимость типа [T]
* @return - возвращает объект типа [T]
*/
T resolve();
}

View 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;
}
}

View 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;
}
}