![]() |
1
14
它们是完全不同的概念。 重载:提供具有相同名称(或构造函数)的多个方法,这些方法的参数数量和/或类型不同。 依赖注入:为组件提供他们需要使用的所有服务(例如身份验证器、数据库连接等),而不是让组件自己构造这些依赖。DI鼓励在接口和实现之间进行干净的分离,并使单元测试更加容易(因为您可以模拟/伪造依赖关系)。
编辑:我不认为我通常会使用
通常我会用 |
![]() |
2
5
重载是语言的一个特点 其中(例如)两个方法可以共享相同的名称,但具有不同的参数列表。例如:
依赖注入是一种与语言无关的技术 删除对象中生成的隐藏依赖项,并将它们传递到对象中。例如。: 将此转换为:
|
![]() |
3
2
很难回答这个问题,因为这两个概念真的没有共同点。
更新(基于OP的更新): StreamReader是DI的一个例子,因为它实际上并没有创建它所读取的数据流——数据流是在其他地方创建的,并传递到它的ctor中。这使得它可以处理任何形式的流(磁盘文件、字符串、网络套接字等) |
![]() |
SkarabePL · Yii2依赖注入、配置和继承 6 年前 |