dart 使用get_it和/或injected的真实的好处是什么?

z4bn682m  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(168)

我在我的应用程序中使用了这个单例:

import 'package:injectable/injectable.dart';

@singleton
final class TMDB {
  ...
}

字符集
在我的应用程序的几个部分中,我使用了类似于这样的语句:

import '../../../config/initializers/di.dart';
import '../../../config/servers/tmdb.dart';

...
final myUrl = getIt<TMDB>().baseURL;
...


正如你所看到的,我有两个 import 语句,getIt<TMDB>()在我的应用程序中可能会使用多次,然后我想我可以使用一个在di.dart中声明的变量:

import 'package:get_it/get_it.dart';
import 'package:injectable/injectable.dart';

import 'di.config.dart';

final getIt = GetIt.instance;  
  
@InjectableInit()  
void configureDependencies() => getIt.init();

final tmdb = getIt<TMDB>();


这将简化前面的语句,但是如果tmdb表示一个单例并且是一个全局变量(* getIt也是 *),那么如果 * 我可以像通常的方式直接声明我的单例 *,那么使用get_it/injectable有什么意义呢?
我看不到使用get_it/injectable或类似工具的真实的好处。

jei2mxaa

jei2mxaa1#

get_it不仅仅是一个单例。它还是一个服务定位器,在测试过程中很有用,可以模拟“真实的”单例。它也是编写/测试/调试/记录的代码,而不是使用您自己开发的单例。

w6mmgewl

w6mmgewl2#

get_it提供了一种灵活的方式来执行依赖注入,而injectable构建在它的基础上,添加了代码生成和其他功能,以提高大型项目的生产力和可维护性。

相关问题