我应该注入(inject)一个接口(interface)还是它的实现?
我在教程中遇到了下面的代码,我想知道为什么要注入(inject)接口(interface)但是当你可以直接注入(inject)它的实现时将它注册为它的实现?
登录 block
@injectable
class SignInBloc extends Bloc<SignInEvent, SignInState> {
final IAuthFacade _authFacade;
SignInBloc(this._authFacade) : super(SignInState.initial());
FIREBASEAUTH @LazySingleton(as: IAuthFacade)
class FirebaseAuthFacade implements IAuthFacade {
注入(inject)配置gh.lazySingleton<IAuthFacade>(
() => FirebaseAuthFacade(get<FirebaseAuth>(), get<GoogleSignIn>()));
最佳答案
您希望将实现细节和依赖关系分离到特定的实现。在不同的实现之间切换会更容易,并且在测试时也更容易模拟接口(interface)。
例如,您可以将 GetIt 配置为根据接口(interface)使用不同的实现,例如开发环境、生产环境、测试环境等等。你只需要改变一条线,它就会到处改变。
关于flutter - 你应该注入(inject)一个接口(interface)还是它的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64242344/