AngularJS - разные способы создания контроллеров и сервисов, почему?

Я продолжаю видеть разные примеры создания контроллеров и сервисов в AngularJS, и я запутался, кто-нибудь может объяснить мне разницу между этими двумя подходами?

app.service('reverseService', function() {
    this.reverse = function(name) {
        return name.split("").reverse().join("");
    };
});

app.factory('reverseService', function() {
    return {
        reverse : function(name) {
            return name.split("").reverse().join("");
        }
    }
});

А также пример контроллера:

function ExampleCtrl($scope) {
    $scope.data = "some data";
}

app.controller("ExampleCtrl", function($scope) {
    $scope.data = "some data";
}

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

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