• 小晏子
    2019-12-16
    课后思考:
    “基于接口而非实现编程”与“依赖注入”的联系是二者都是从外部传入依赖对象而不是在内部去new一个出来。
    区别是“基于接口而非实现编程”强调的是“接口”,强调依赖的对象是接口,而不是具体的实现类;而“依赖注入”不强调这个,类或接口都可以,只要是从外部传入不是在内部new出来都可以称为依赖注入。
     2
     81
  • 下雨天
    2019-12-16
    区别:
    1.依赖注入是一种具体编程技巧,关注的是对象创建和类之间关系,目的提高了代码的扩展性,我们可以灵活地替换依赖的类。
    2.基于接口而非实现编程是一种设计原则,关注抽象和实现,上下游调用稳定性,目的是降低耦合性,提高扩展性。

    联系:
    都是基于开闭原则思路,提高代码扩展性!
    展开
    
     32
  • 辣么大
    2019-12-16
    1⃣️控制反转是一种编程思想,把控制权交给第三方。依赖注入是实现控制反转最典型的方法。
    2⃣️依赖注入(对象)的方式要采用“基于接口而非实现编程”的原则,说白了就是依赖倒转。
    3⃣️低层的实现要符合里氏替换原则。子类的可替换性,使得父类模块或依赖于抽象的高层模块无需修改,实现程序的可扩展性。
     2
     16
  • 业余爱好者
    2019-12-16
    原来的模式是一个spring开发的项目放在Tomcat中,控制权在Tomcat手中。现在微服务兴起,大家都用springboot开发。此时是Tomcat在springboot项目当中。控制权在springboot手中,虽然只是表面上。这便是控制反转。

    这是一场控制权争夺之战。
     6
     13
  • Smallfly
    2019-12-16
    依赖倒置原则概念是高层次模块不依赖于低层次模块。看似在要求高层次模块,实际上是在规范低层次模块的设计。

    低层次模块提供的接口要足够的抽象、通用,在设计时需要考虑高层次模块的使用种类和场景。

    明明是高层次模块要使用低层次模块,对低层次模块有依赖性。现在反而低层次模块需要根据高层次模块来设计,出现了「倒置」的显现。

    这样设计好处有两点:

    1. 低层次模块更加通用,适用性更广
    2. 高层次模块没有依赖低层次模块的具体实现,方便低层次模块的替换

    思考题:

    基于接口而非实现编程,是一种指导编码的思想。依赖注入是它的一种具体应用。

    个人理解,仅供参考~
    展开
     5
     12
  • KIM
    2019-12-16
    感觉比head first设计模式讲的清晰
     3
     8
  • javaadu
    2019-12-17
    课堂讨论:这两个概念没什么关系,讲的不是一个事。依赖注入讲的是一个对象如何获得它运行所依赖的对象,所谓依赖注入就是不需要自己去new,让框架注入进来;基于接口而不是实现编程讲的是抽象思维的应用,利用编程,可以屏蔽掉底层具体实现改变导致上层改变的问题。

    文中的那个例子,只是恰好同时使用了依赖注入这个编程技巧,同时也实践了基于接口而非实现编程这个原则。
    
     5
  • Ken张云忠
    2019-12-16
    区别:
    基于接口而非实现编程:是面向对象编程的一种方式.减少对外部的依赖,还可以提升代码的灵活性,扩展及修改时可以控制风险的传播,符合开闭原则.
    依赖注入:是一种具体的编码技巧,属于编程规范的范畴.不通过 new 的方式在类内部创建依赖类的对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类来使用。
    联系:
    两者结合在一起可以实现代码的灵活性,减少对外部的依赖,提升代码的可维护性/可扩展性.
    课外感想:
    非常喜欢王争老师这样有深度内涵的课程,概念理解深入透彻,宏观方向把握准确,跟着老师的课程更有信心去挑战阿里这样一流企业的工作.报告老师,我归队了.
    展开
    
     4
  • MindController
    2019-12-16
    深夜打卡
     1
     4
  • thomas
    2019-12-16
    DIP原则有点嘎然而止的感觉,缺少了一个具体的例子。

    作者回复: tomcat的例子不算啊

    
     3
  • 帆大肚子
    2019-12-16
    在我看来,“依赖注入”是“基于接口而非实现编程”的一个实践。
    “基于接口而非实现编程”是一条设计原则,可以帮助我们诞生更多类似于“依赖注入”的实践
    
     2
  • MarksGui
    2019-12-16
    这个专栏确实讲解的非常细致!争哥确实是用心做专栏!以前对很多类似的概念都没理解透彻,通过这个专栏完全明白了!
    
     2
  • iLeGeND
    2019-12-16
    有收获
    
     2
  • 袁慎建
    2020-02-04
    基于接口中的接口不是特指是编程语言中的接口,代表的是抽象。

    1. 面向抽象编程,它强调的核心是抽象思维,解决的核心问题是程序的可扩展性。
    2. 依赖注入,它强调的核心对象的管理,解决的核心问题释放程序员生产力,程序员不用花太多经历管理琐碎的对象创建和生命周期管理,将精力花在具有价值的业务上。
    
     1
  • Maurice
    2020-01-13
    “相对于细节的多变性,抽象的东西要稳定的多”,个人认为吃透这句话就够了。
    
     1
  • 至今未来
    2019-12-30
    依赖注入是种编码技巧 来提高扩展性(巧妙的构建数据流)
    基于接口而非实现编程 是利用编程语言提供的多态属性来提高扩展性(利用编程语言自身的结构属性-多态)
    
     1
  • |・ω・`)
    2019-12-18
    关于最后一个依赖反转能再举个简单的代码例子吗?Tomcat的案例没懂˙Ⱉ˙ฅ

    作者回复: 你网上搜下 开关的例子 那个更简单

    
     1
  • 阿顺
    2019-12-17
    区别:依赖注入是不是使用的是多态的特性,基于接口而非实现编程使用了抽象的性,对吗
    
     1
  • 堵车
    2019-12-17
    老师,今天怎么没更新,我已经迫不及待了。隔壁那本DDD好多词汇难理解,我受了打击,过来找安慰。

    作者回复: 周一三五更新的

    
     1
  • 阿冰777
    2019-12-16
    基于接口而非实现编程(依赖倒置原则): 高层和低层组件都使用了一样的接口,然后让接口去控制整个逻辑,这样高层组件就不会依赖于具体的低层组件实现。简单来讲,就是大家都用接口,彼此不认识。
    依赖注入:依赖注入就是一个组件内部依赖一个对象,但是他不自己造,等别人送上来。
    他们俩的关系就是,在依赖倒置原则指导下的设计里,组件都没有内部创造依赖的对象,全是通过外部传入的,但是也不一定是注入,有可能只是个过客(传进去用完就扔),而且注入的时候,都是以接口的形式注入的,而依赖注入并不一定是接口。
    
     1
我们在线,来聊聊吧