AngularJS: Kiedy korzystać z usługi zamiast z fabryki

Proszę, przynieś mnie tutaj. Wiem, że są inne odpowiedzi, takie jak:AngularJS: Service vs provider vs factory

Jednak wciąż nie mogę się domyślić, kiedy korzystasz z usług fabrycznych.

Z tego, co mogę powiedzieć, fabryka jest powszechnie używana do tworzenia „wspólnych” funkcji, które mogą być wywoływane przez wiele kontrolerów:Tworzenie wspólnych funkcji kontrolera

Dokumenty Angulara wydają się preferować obsługę fabryczną. Odwołują się nawet do „usługi”, gdy korzystają z fabryki, która jest jeszcze bardziej myląca!http://docs.angularjs.org/guide/dev_guide.services.creating_services

Kiedy więc skorzystasz z usługi?

Czy jest coś, co jest możliwe lub łatwiejsze w obsłudze?

Czy za kulisami dzieje się coś innego? Różnice wydajności / pamięci?

Oto przykład. Inne niż metoda deklaracji, wydają się identyczne i nie mogę zrozumieć, dlaczego zrobiłbym jeden przeciwko drugiemu.http://jsfiddle.net/uEpkE/

Aktualizacja: Z odpowiedzi Thomasa wynika, że ​​usługa jest prostszą logiką i fabryką dla bardziej złożonej logiki z prywatnymi metodami, więc zaktualizowałem kod fiddle poniżej i wydaje się, że oba są w stanie obsługiwać prywatne funkcje?

myApp.factory('fooFactory', function() {
    var fooVar;
    var addHi = function(foo){ fooVar = 'Hi '+foo; }

    return {
        setFoobar: function(foo){
            addHi(foo);
        },
        getFoobar:function(){
            return fooVar;
        }
    };
});
myApp.service('fooService', function() {
    var fooVar;
    var addHi = function(foo){ fooVar = 'Hi '+foo;}

    this.setFoobar = function(foo){
        addHi(foo);
    }
    this.getFoobar = function(){
        return fooVar;
    }
});

function MyCtrl($scope, fooService, fooFactory) {
    fooFactory.setFoobar("fooFactory");
    fooService.setFoobar("fooService");
    //foobars = "Hi fooFactory, Hi fooService"
    $scope.foobars = [
        fooFactory.getFoobar(),
        fooService.getFoobar()
    ];
}

questionAnswers(8)

yourAnswerToTheQuestion