Edit in JSFiddle

var myApp = angular.module('myApp', []);

// service style, probably the simplest one
myApp.service('helloWorldFromService', function () {
    this.sayHello = function () {
        return "Hello, World!"
    };
});

// factory style, more involved but more sophisticated
myApp.factory('helloWorldFromFactory', function () {
    return {
        sayHello: function () {
            return "Hello, World!"
        }
    };
});

// provider style, full blown, configurable version     
myApp.provider('helloWorld', function () {

    this.name = 'Default';

    this.$get = function () {
        var name = this.name;
        return {
            sayHello: function () {
                return "Hello, " + name + "!"
            }
        }
    };

    this.setName = function (name) {
        this.name = name;
    };
});

// hey, we can configure a provider!            
myApp.config(function (helloWorldProvider) {
    helloWorldProvider.setName('World');
});


function MyCtrl($scope, helloWorld, helloWorldFromFactory, helloWorldFromService) {

    $scope.hellos = [
        helloWorld.sayHello(),
        helloWorldFromFactory.sayHello(),
        helloWorldFromService.sayHello()
    ];
}
<div ng-controller="MyCtrl">{{hellos}}</div>