美文网首页Java
[Java] Dependency injection和Serv

[Java] Dependency injection和Serv

作者: 何幻 | 来源:发表于2016-03-08 07:18 被阅读116次

    依赖倒置原则DIP:
    高层模块不应该直接依赖于低层模块,两者应该都依赖于抽象。

    Person person=new Persion();
    person.eat(new Noodle());
    
    public void eat(Noodle noodle){}    //违反依赖倒置原则
    public void eat(Food food){}    //DIP:依赖于抽象的interface Food
    

    控制反转IoC:(DIP的一种实现)
    为相互依赖的组件提供抽象,将依赖对象(低层模块)的获得交给第三方(系统)来控制,即依赖对象不在被依赖模块的类中直接通过new来获取

    依赖注入DI:(IoC的一种实现)
    将依赖对象的创建和绑定转移到被依赖对象类的外部来实现。
    把依赖的对象当做参数传进去。(构造函数注入,属性注入,接口注入)

    Person person=new Person();
    person.food=new Noodle();    //属性注入
    person.eat();
    

    服务定位器Service Locator:(IoC的一种实现)
    将构建依赖的接口彻底与依赖者分离,并将此依赖作为“服务”绑定到一个标识符(通常是一个字符串),而后依赖者则可通过这个标识符获取被绑定的依赖。

    Person person=new Person();
    ServiceLocatorserviceLocator=new ServiceLocator();
    Food food=serviceLocator.get(food);
    person.eat(food);
    

    相关文章

      网友评论

        本文标题:[Java] Dependency injection和Serv

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