Service, Provider, factory

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.15/angular.js"></script>
<div ng-app="app">
    <div ng-controller="MyController">
        <div>Value: {{o1}}</div>
        <div>Constant: {{o2}}</div>
        <div>Service: {{s1}}</div>
        <div>Factory: {{s2}}</div>
        <div>Provider: {{s3}}</div>
        <div>Provider: {{s3.prop3}}</div>        
    </div>
</div>

JavaScript

angular.module('app', []);
angular.module('app').value('myObject1', {
    prop1: "val1",
    prop2: "val2"
});

angular.module('app').constant('myObject2', {
    prop1: "val1",
    prop2: "val2"
});

angular.module('app').service('myService1', function (dep1) {
    this.prop1 = "val1";
    this.prop2 = dep1.doWork();
    this.prop3 = function () {};
});

angular.module('app').factory('myService2', function (dep1) {
    var service = {
        prop1: "val1",
        prop2: dep1.doWork(),
        prop3: function () {}
    };
    return service;
});
angular.module('app').provider('myService3', function () {
    var prop1;
    this.setIntialProp1Value = function (value) {
        prop1 = value;
    };
    this.ananinki = function() {
    	return 'ananin ami';
    }
    this.$get = function (dep1) {
        var service = {
            prop1: prop1,
            prop2: dep1.doWork(),
            prop3: this.ananinki
        };
        return service;
    };
});

angular.module('app').config(function (myService3Provider) {
    myService3Provider.setIntialProp1Value("Tamer en buyuk");
});

angular.module('app').service('dep1', function () {
    this.doWork = function () {
        return "Done!";
    };
});

angular.module('app').controller('MyController', function ($scope, myObject1, myObject2, myService1, myService2, myService3) {
    $scope.o1 = myObject1;
    $scope.o2 = myObject2;
    $scope.s1 = myService1;
    $scope.s2 = myService2;
    $scope.s3 = myService3;
});