VContainer-about/what-is-di | 概述——DI 是什么?
依赖注入(DI)是面向对象编程中的通用技术,核心目标是消除代码中的不必要依赖。
它能提升代码的可测试性、可维护性、扩展性和模块替换能力。
在编程范式设计中,基础原则是:低耦合模块,高内聚实现。
面向对象编程(OOP)通过以下方式实现:
- 对象封装职责细节(封装性)
- 对象将非自身职责的工作委托给其他对象(委托机制)
但这种方式存在根本性问题:
如果在类代码中直接编写委托对象,意味着源码级别的强耦合。
唯一解耦的方式是从外部传入依赖项。
当类需要从外部获取依赖时,就需要依赖注入技术的支持。
DI 通过外部容器完整解析依赖关系,实现解耦。
扩展阅读:
术语
- DI 容器: 集中管理依赖关系并自动装配。
- 组合根: 配置依赖解析的地方。
- 自动装配: 容器自动管理服务依赖的功能。通常由 DI 库负责。
- IoC(控制反转): 将控制流逻辑从视图组件中抽离,传统编程中入口点通常处理用户输入等控制流。
为什么 Unity 需要 DI?
在 Unity 中,MonoBehaviour 既是 C# 代码的入口点,又是“视图组件”。
现代应用设计强调"业务逻辑与表现层分离"。
而 MonoBehaviour 往往承担过多职责(事件处理、控制流、业务逻辑调用等)。
通过 DI 容器实现控制反转(IoC)。通过 DI 容器,我们可以使纯 C# 类成为入口点(替代 MonoBehaviour)。将控制流和业务逻辑从作为视图组件的 MonoBehaviour 中分离。
视图组件在运行时动态创建/销毁,而所有“功能”(如控制流和领域逻辑)保持稳定生命周期。
最佳实践是让视图层保持无状态,与控制流和数据管理分离。
这正是 DI 在 Unity 中的核心价值。

浙公网安备 33010602011771号