Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
207 views
in Technique[技术] by (71.8m points)

angular - is it a good practice to inject all my services in root?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The problem with Singleton services (the problem that you are experiencing) is caused by the fact that those services will be active and stored in memory as long as the application works, while with a non-Singleton you can use the OnDestroy() lifecycle hook and garbage collect stuff to clean the memory.

That being said, if a service needs to be a singleton, it needs to be a singleton. This is a pattern that is used in every programming language. If you misuse (or abuse) the pattern, the app is going to be slower for sure. For example, if you need a service only in a module, you should declare the service in the module level (in the provider's array of the module) and not as a singleton. If you can use multiple instances of a service (aka you don't need to share the same instance between different components), then don't use a singleton.

But if you really need a singleton, there is no other choice.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...