【问题标题】:AngularJS - is it dependency injection or multiple inheritance?AngularJS - 是依赖注入还是多重继承?
【发布时间】:2014-02-11 16:00:27
【问题描述】:

我读过的关于AngularJS 的大部分documentation 都在谈论依赖注入。

在定义控制器时,您可以将其他类注入到其中,使其操作/属性可从调用类访问。

所以,我说在哪里定义了 contentTypeFactory,然后我将其注入contentTypeController 中,因此我获得了工厂的所有好处,并且可以在其中调用属性和方法.

即:app.controller('contentTypeController', ['$scope', '$log', 'contentTypeFactory', ...

从 OO 的角度来看,这看起来很像多重继承,而不是依赖注入。

有人可以澄清一下吗?

【问题讨论】:

  • 多重继承对我来说意味着继承父类的接口和行为。我会考虑角度非常清晰的依赖注入,并且对象由服务等组成。
  • 从面向对象的角度来看,这是组合而不是继承。
  • 我不认为它是继承,因为如果其他地方的一些其他代码称为contentTypeController.myMethod(),它不会在contentTypeFactory 中寻找myMethod()。它只会查看contentTypeController。您可以在 contentTypeController 中创建一个名为 contentTypeFactory.myMethod() 的包装器方法,但正如 michael 所说,这将是组合,而不是继承。

标签: javascript angularjs oop dependency-injection


【解决方案1】:

我认为简单的答案是你描述的不是多重继承。

JavaScript 支持非多重继承的原型继承。

当您使用依赖注入时,您倾向于组合而不是继承。依赖关系是“HAS A”关系。这不是“IS A”关系。

在您的特定场景中,您的控制器“HAS A”contentTypeFactory。它不是 contentTypeFactory。您的控制器将工作委托给它。

我希望这能回答你的问题。

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 2023-03-28
    • 2014-10-14
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多