A factory, and the service is really different in a simple one simple, but very important way.
A Factory returns services that may be new'd.
In other words, you can do this:
var instanceOne = new $factory; var instanceTwo = new $factory;
... and then call them separate objects. This is actually a factory pattern.
Here is a simple factory example where you can get copies ...
app.factory('myFactory', function() { return { talk: function(what) { return "Say " + what; } } });
If instead you want a Service , you need to reference the methods inside that .methodName name, then you simply return the service itself or the singleton template. So ...
app.service('myService', function() { this.talk = function(what) { return "Say " + what; }; });
As a side note; if you look at my code, Angular now supports the actual definition of services using the service keyword or the factory keyword. In the source you can see that they both literally refer to the same code.
How similar they are, and in fact these two factory and service methods are interchangeable, so if you get confused at first, don't sweat; almost no difference ... almost :)
... many people seem to want to know: "How can you return a factory or service that has only one function, i.e. is it a function itself?" Easy .. like that ...
app.factory('myFactory', function() { return function(what) { return "Say " + what; } });