我想了解单身模式。
我用angular编写了很多代码,最近我想重构一些代码并将其移动到一个可以由不同控制器共享的公共位置。所以我将所有常用的工具移动到我的服务中。
现在关于here的文档说角度服务是单例,但我想了解单身模式背后的原因?为什么不拥有服务对象的多个实例而不是传递对控制器的引用?
答案 0 :(得分:4)
这一切都在名称“服务”中。服务,就像控制器之间的通信媒介,甚至是指令。不仅用于通信,您还可以在服务中添加一组实用程序功能,这些功能可以在整个模块/应用程序中使用。这不需要具有多个实例来实现此目的。因此,单身。
答案 1 :(得分:1)
Angular服务是在控制器之间交换数据和通信的推荐方式。因此,为了允许这种数据交换,服务是单例对象,这意味着您可以保证在所有控制器之间具有相同的服务引用。
例如,假设您有一个Angular应用程序,它显示从页面中心的另一个用户收到的消息列表,以及标题中收到的消息数或新消息通知。标题和页面内容很可能在不同的范围内,并由不同的控制器处理。为了使这两个控制器具有相同的接收消息视图并且能够一致地显示它们,他们将需要使用保存该信息的单个对象。这个对象是一个Angular服务。