为什么 angular 服务是单例的?

Why are angular services Singletons?

我正在尝试理解单例模式。

我在 angular 中写了很多代码,最近我想重构我的一些代码并将其移动到一个可以由不同的人共享的公共位置 controllers.So 我移动了所有公共工具到我的服务。

现在 here 上的文档说 angular 服务是单例,但我想了解这里有单例模式的原因?为什么不拥有服务对象的多个实例而不是将引用传递给控制器​​?

Angular 服务是在控制器之间交换数据和通信的推荐方式。因此,为了允许这种数据交换,服务是单例的 objects,这意味着您保证在所有控制器之间具有相同的服务引用。

举个例子,假设您有一个 Angular 应用程序,它在页面中央显示从另一个用户收到的消息列表,以及已接收消息或新消息通知的数量header。 header 和页面内容很可能处于不同的范围内,并由不同的控制器处理。为了让这两个控制器对接收到的消息具有相同的视图并能够一致地显示它们,它们将需要使用一个单例 object 来保存此信息。此 object 是一项 Angular 服务。

全都落在名字里"Service"。服务,就像控制器之间进行通信的媒介,甚至是指令之间的通信媒介。不仅仅是为了通信,你可以在你的服务中添加一组实用功能,可以在整个module/app中使用。这不需要有多个实例来达到目的。因此,单例。