Angular js - Services are singleton objects 是什么意思?

Angular js - Services are singleton objects means?

它说 Angular JS 服务是单例对象,在应用程序中只实例化一次。 在实例化方面,它与 Angular JS 工厂或控制器有何不同?

带有 fiddle 的答案会有所帮助。

AngularJS 中没有 factory 组件。工厂是一个传递给 module.factory() 的函数,其职责恰恰是 创建 服务实例。此工厂仅被 Angular 调用一次,以创建服务的唯一实例。这个由工厂函数返回的唯一实例随后被注入到需要服务的任何地方。

所以,简而言之,当你这样做时

app.factory('foo', function() {
    var service = {};
    ...
    return service;
});

您没有定义 工厂。您传递一个工厂函数给app.factory(),这个工厂创建returns服务实例。 'foo' 是服务的名称。

控制器根本不是单例。每次使用 ng-controller="FooCtrl" 或在某些路由或指令中使用 FooCtrl 时,都会创建一个新的 FooCtrl 实例。

服务是一个class或一个对象,一旦你创建了一个class的对象,它在单例模式下工作,相同的对象将被重用,因此内存利用率非常低。更多详情 tutespace.com