Lazily instanceulated - AngularJS создает экземпляр сервиса только в том случае, если от него зависит компонент приложения.
В вашем приложении могут быть созданы тысячи/сотни сервисов. Они не будут активированы, когда они будут созданы. Например, смотрите ниже код
var app = angular.module('app', [])
app.service('test', function() {
this.xyz = function() {
return one;
};
});
На данный момент, test
услуга просто определена и не активируется.
var app2 = angular.module('app2', ['app'])
app2.service('test2', function(test) {
this.xyz = test.xyz();
});
Теперь, если вы видите test2
службы в зависимости от test
службы. Таким образом, Angular создает test
сервис перед выполнением службы test2
. Если test2
не использует test
, то он не будет создан. То же самое относится и к сервису test2
. Если ни один не использует его, он также не получает экземпляр.
Singletons - Каждый компонент, зависящий от службы, получает ссылку на единственный экземпляр, созданный фабрикой услуг.
Представьте себе, что вы хотите написать службу, которая отправляет аналитику с вашей веб-страницы на сервер. Таким образом, каждый раз, когда вы используете методы обслуживания, вы хотите использовать один и тот же экземпляр вместо создания нового экземпляра отправителя аналитики каждый раз, когда он вводится в любую часть приложения. Об этом говорится в описании. Когда выполняется служебный код, создается один экземпляр и один и тот же экземпляр передается в любую часть приложения, в которое вводится служба.
В то же время, представьте, что у вас есть класс пользователя. Вы хотите создать новый пользовательский экземпляр для каждого пользователя. Вы не хотите, чтобы один и тот же экземпляр использовался для каждого пользователя. В таких случаях служба не полезна. Вместо этого вы использовали бы factory
.