search

Home  >  Q&A  >  body text

php - 如何理解IoC(Inversion of Control)?

RT,如何理解IoC(Inversion of Control)?如果能写个demo解释最好了。

伊谢尔伦伊谢尔伦2822 days ago1022

reply all(17)I'll reply

  • 大家讲道理

    大家讲道理2017-04-10 15:13:10

    IoC,控制反转,把对XX的控制交给别人。
    spring的DI就是你把new对象的工作交给spring。

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:13:10

    参考Spring Ioc容器
    推荐阅读的文章
    Inversion of Control Containers and the Dependency Injection pattern
    InversionOfControl
    自己动手写一个IoC工具

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:13:10

    ioc 通俗一点的说,你把他想成一个大工厂,你问他要什么object,他就给你什么object,就是这么简单
    他就像一个全局变量,在每个object里面的都可以访问到
    你问他要什么object,他就给你什么object

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:13:10

    ioc主要作用是用来解析类的实例,为什么要解析?而不是直接获得?因为类有其他类的依赖关系。ioc容器可以把多层级的依赖关系全部解析出来。

    如果你看的是Laravel框架,可以看看:Service Container(IOC容器)

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 15:13:10

    依赖注入和控制反转都是为了达到相同的解耦效果,Ioc确实不够开门见山,因此业界称进行了广泛的讨论,最终软件界的泰斗级人物Martin Fowler提出了DI的概念用以替代Ioc,即让调用类对某一接口实现类的依赖关系都第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 15:13:10

    依赖注入是控制反转的一种实现方式。

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:13:10

    IOC可以通俗理解:

    比如我要去ATM取款,我有一堆银行卡:农行、建行

    IOC处理的就是通过ATM的接口(当然也包括系统)去约束卡

    比如,卡的大小要求,卡要有磁条,然后得有余额;这些元素都是取款的必备条件。ATM就约束了卡。

    IOC的精髓就是:取款操作一致,而卡却不一样。而能使用的卡则依靠中间者(ATM机)去约束

    reply
    0
  • Cancelreply