AngularJS: Когда использовать сервис вместо фабрики

Пожалуйста, потерпите меня здесь. Я знаю, что есть и другие ответы, такие как:AngularJS: Сервис против провайдера против фабрики

Однако я все еще не могу понять, когда вы будете использовать сервис на заводе.

Из того, что я могу сказать, фабрика обычно используется для создания «общих» функций, которые могут вызываться несколькими контроллерами:Создание общих функций контроллера

Angular docs, кажется, предпочитает фабрику, а не сервис Они даже ссылаются на «сервис», когда используют фабрику, что еще более запутанно!http://docs.angularjs.org/guide/dev_guide.services.creating_services

Так когда же можно будет воспользоваться услугой?

Есть ли что-то, что только возможно или намного проще сделать с помощью сервиса?

Есть что-нибудь другое, что происходит за кулисами? Различия производительности / памяти?

Вот пример. Кроме метода объявления, они кажутся идентичными, и я не могу понять, почему я сделал бы одно против другого.http://jsfiddle.net/uEpkE/

Обновить: Из ответа Томаса кажется, что сервис предназначен для более простой логики и фабрики для более сложной логики с закрытыми методами, поэтому я обновил код скрипты ниже, и кажется, что оба способны поддерживать частные функции?

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()
    ];
}

Ответы на вопрос(8)

Ваш ответ на вопрос