美文网首页
angularjs1依赖注入简单实现

angularjs1依赖注入简单实现

作者: 星月西 | 来源:发表于2017-04-12 21:55 被阅读182次

    1.依赖注入

    依赖注入式实现控制反转的一种软件设计模式,即将被依赖的对象传递给依赖者,而不需要依赖者自己去创建和查找所需对象。
    具体在angular中,依赖注入指的就是当一个控制器需要传入一个服务时,不需要他自己去实现化这个服务,而是由依赖注入器来分析这个服务的依赖,来实例化这个服务,并传入控制器中。

    2.简单实现

    首先需要实现一个依赖注入器,负责管理各个服务之前的依赖和构造关系,同时包含有一个注册函数,负责注册构造函数和依赖,和一个注入函数负责实例化服务。

    //依赖注入器
    function Injector(){
        this.service={};
    }
    
    Injector.prototype={
        //注册服务方法
        regist: function(name,fn,depends){
            //管理依赖的容器
            this.service[name]={
                constructor: fn,
                depends: depends
            };
        },
    
        //注入方法
        inject: function(name){
            var self=this;
            (function ready(na){
                if(!self.service[na].depends){
                    return self.service[na].constructor();
                }
                else{
                    var args=[];
                    self.service[na].depends.forEach(function(item){
                        args.push(ready(item));
                    });
                    return self.service[na].constructor.apply(null,args);
                }
            })(name);
        }
    };
    

    实现思路就是每次需要注入一个服务时,递归地查找他的依赖项进行实例化。
    这个依赖注入器的使用方法如下:

    var injector=new Injector();
    //注册name服务,依赖于color服务
    injector.regist('name',function(color){
        console.log(color.ready);
    },['color']);
    
    //注册color服务
    injector.regist('color',function(){
        return {
            ready: 'green'
        };
    });
    
    //注入name服务
    injector.inject('name');
    

    相关文章

      网友评论

          本文标题:angularjs1依赖注入简单实现

          本文链接:https://www.haomeiwen.com/subject/ltlvattx.html