AngularJS: Services Vs Factories Vs Providers

So I found myself wondering, what’s the difference between a service, factory & provider. And when is best to use each?
I use the three every day but couldn’t come up with (or find online) an explanation I was happy with, or could fully grasp.

That was until recently. I was working on a task this week and wasn’t sure which to use/extend. This brought me back to my question.

I came up with this little JSFiddle that explains it fairly well.
In my mind anyway: (nothing substantial, just a quick ‘Hello, World!’ example.)


DarraghAngularJS: Services Vs Factories Vs Providers