/ / AngularJs: Czego powinienem użyć do stworzenia biblioteki klas (usługa / fabryka / dostawca)? - angularjs

AngularJs: Do czego powinienem użyć, aby utworzyć bibliotekę klas (usługa / fabryka / dostawca)? - angularjs

Mam swoją główną usługę:

(function (angular) {
"use strict";

angular
.module("app")
.service("mainService", mainService);

mainService.$inject = ["classLibrary"];

function mainService(classLibrary) {
this.person = new classLibrary.Person("Name", "Surname");
};

})(window.angular);

I następna tak zwana biblioteka klas:

(function (angular) {
"use strict";

angular
.module("app")
.service("classLibrary", classLibrary); // service/factory/provider ?

function classLibrary() {

// Classes:
this.Person = function(name, surname) {
this.name = name;
this.surname = surname;
};
};

})(window.angular);

Pytanie brzmi: jakiego elementu kątowego powinienem użyć w swojej bibliotece klas. Myślałem o serwisie lub fabryce, ale nie jestem pewien, co jest lepsze w moim przypadku.

Odpowiedzi:

1 dla odpowiedzi № 1

Odpowiedź jest fabryczna i użyj poniższego kodu, aby dodać fabrykę

(function (angular) {
"use strict";

angular
.module("app")
.factory("classLibrary", classLibrary);

var classLibrary function() {

// Classes
var obj = {
fieldname1: "val1",
fieldname2: "value2"
};
//if your using array of objects use this
var objArray =[];
return
{
obj :obj ,
objArray:objArray
}
});
})();

Fabryka może zawierać wszystkie klasy ipowiązane właściwości. Jeśli chcesz korzystać z funkcji wewnątrz klasy. Musisz utworzyć oddzielną fabrykę, która będzie mogła korzystać z tych klas i ich właściwości za pośrednictwem kontrolera.

Metody zawierające fabryki będą takie.

module.factory("ServicecontainingMethods", function(){
return{

methodName1:function(){

},
methodName2:function(params){

},

}
});

0 dla odpowiedzi nr 2

Zgodnie z komentarzami i odpowiedziami na ten temat mam kolejne rozwiązanie

(function (angular) {
"use strict";

angular
.module("app")
.factory("classLibrary", classLibrary);

function classLibrary() {

var factory = {
getPerson: function(name, surmane) { return new Person(name, surname); },
getManager: function(name, surmane) { return new Manager(name, surname); }
};

// Private members

function Person(name, surname) {

this.name = name;
this.surmane = surname;

this.toString = function() {
return this.name + this.surname;
};
}

function Manager(name, surname) {

this.constructor.prototype = Person;
this.manager = true;
}

// ---

return factory;
};
})(window.angular);