依赖注入的理解

依赖注入(DI)是一种让代码管理其依赖关系的设计模式,目的是为了解耦。

举个例子:假设我们定义了一个方法,在方法里面需要一个对象,我们在此方法内部声明该对象,那么这个对象就和这个方法是永远绑定状态。

用上面的例子来说其实就是在方法内部把对需要的对象的【依赖】控制交给第三方了,第三方负责依赖的创建和存储。这样控制就反转了,由自己转换成第三方了。

如何实现解耦的简单代码:

 

// 如果不需要依赖注入这样写
    function demo(){
      const person = new Object({
        name: 'test',
        age: 18
      })
      //
      const result = person.age++
      return result
    }
    demo()
    // 换成依赖注入方式,这样就可以合person解耦了
    function demo1(person) {
      return person.age++
    }
    const person = new Object({
      name: 'test',
      age: 18
    })

    demo1(person)

 

  

angularjs的依赖注入:

someModule.controller('MyController', ['$scope', 'dep1', 'dep2', function($scope, dep1, dep2) {
    ...
    $scope.aMethod = function() {
      ...
    }
    ...
  }]);

vue2.0的依赖注入:

父组件:

export default {
      provide: function () {
        return {
          getData: this.getData
        }
      },
      data() {
        return{}
      },
      methods: {
        getData(fn) {
          // 业务代码
          fn('传给子组件的值')
        }
      }
    }

    export default {
      inject: ['getData'],
      data() {
        return{}
      },
      mounted() {
        this.init()
      },
      methods: {
        init() {
          // 业务代码
          this.getData((param)=> {
            // 父组件传过来的值
          })
        }
      }
    }

  

 

posted @ 2021-03-17 17:24  闯入码途的水产人  阅读(127)  评论(0编辑  收藏  举报