IOC/DI 改进了接口定义
本文关键字:接口 定义 DI IOC | 更新日期: 2023-09-27 18:31:54
我已经阅读了有关用于依赖注入的IOC/DI的文章。它说要创建我们希望注入的每个类的接口。它是否违反了接口的定义(实现我们想要在类中强制执行行为的地方)。任何帮助将不胜感激。谢谢。
我认为您的主要困惑点是,在 DI/IoC 场景中,我们没有要注入的类,而是要注入的服务。假设我有一个Logger
课。我想要注入的不是Logger
类本身,而是 ILogger
接口描述的日志记录服务集。如果我不使用 DI 或 IoC,我会在每个类中都有一个位置,我会去ILogger _logger = new Logger()
,或者可能是ILogger _logger = Logger.Instance
,两者都将我的代码耦合到 ILogger
接口的特定实例。但是对于 DI/IoC,我将此步骤留给框架,并且不为业务逻辑类中的特定实现而烦恼。
它是否违反了接口的定义(实现我们想要在类中强制执行行为的地方)?
不,它没有。
你正在创建一个界面这一事实本身就意味着你正在定义行为。 是否要使用 DI 来实现并不那么相关。