0

我有我想使用的这项服务,但可能会发生我的应用程序的某些部分需要相同的服务但​​在内部使用不同的参数。据我所知,由于服务总是引用同一个实例,这意味着要么在执行操作之前手动编辑各处的参数,要么将它们传递给每个函数。这会很快变得混乱,我想知道是否可以创建一个工厂来初始化我需要的不同版本的服务。

像这样的东西,例如:

function FooService(){
    this.setParams = function(params){
        ...
    }
};

function FooServiceFactory(){
    return{
        createService: function(name, params){
            var serv = new FooService();
            serv.setParams(params);
            ServiceModule.service(name, serv);
        }
    }
};
4

1 回答 1

0

您也可以创建工厂。

app.factory("InstantiateMe", [function() {
    return function(params)
    {
        // some code
    };
}]);
app.controller("Ctrl", ["InstantiateMe", function(InstantiateMe) {
    var instance = new InstantiateMe({param: "value"});
}]);

简而言之,工厂函数只返回:一个工厂。它的返回值可以是一个对象、一个函数,或者在这种特殊情况下是一个构造函数。您可以通过这种方式实例化所需服务的多个实例。

这是一篇关于该主题的好文章,详细说明了我总结的内容,您可能会觉得有用。

于 2014-05-22T08:37:44.283 回答