zoukankan      html  css  js  c++  java
  • IOC设计模式初步了解(day02)

    IOC(Inversion of Control):控制反转。

    *其他解释:依赖注入、依赖反转……

    设计目标:简化JEE的研发工作,提供IOC容器,控制bean的生成、注入,解耦。

    看了网上的一些帖子、介绍,书籍中的一些剖析,都不是很了解IOC这个概念,于是找来这么段代码,直接从代码上去理解了。

    interface A{
    
    }
    public class B implements A {
    
    }

    正常情况下,我们要使用到A接口的实现都是这样:

    A a = new B();

    但在IOC实现Spring中则是这样:

    @Autowired
    public A a;

    也就是说,当你要应用不同的实现类的时候,你只需要去配置xml文件,或者修改@service的bean对象,如:

    @Service
    public class B implements A {
    
    }

    改成

    @Service
    public class C implements A {
    
    }

    而不需要这样子修改:

    A a = new C();

    这里不去探讨Spring是如何实现的,具体涉及到的反射相关名词,如有兴趣,自行学习。

    我们只谈论这样子的好处,经常进行Ajax编程的人,或许对这样子的代码并不陌生:

    $.post(url, function(data){
      // 
    });

    这里用到的是回调的设计模式,在java中这样的回调通常会与接口挂钩,即传进去的是一个接口实现类(因为java中的函数实现必须要挂载在对象上,而不像脚本语言可以进行函数式编程),所以前端代码中传递的就仅仅是一个匿名函数了,这样的好处就是当你实际运行的时候才去确定你所需要绑定的方法,而非耦合度高的编译时绑定或者硬编码。

    实际上这对于Java这种强类型的接口编程语言是相当合适的,至少笔者认为这样可以指导初学者的编程,举个例子,在swing编程中的事件监听你只需要传一个接口实现类(里面对应的方法需要实现)进去即可,而不需要去编写相当复杂的代码逻辑,即把业务逻辑部分的代码抽离出来,让研发人员可以专注在业务逻辑的实现上。Spring很大程度上的一个设计目标就是如此。

  • 相关阅读:
    img 的data-src 属性及懒加载
    try catch 用法
    input 的各种属性的验证 checkValidity兼容性
    表单提交的方法。
    通信原理
    计算机组成原理
    CREC 2017
    POJ 1201 Intervals
    HDU 3440 House Man
    poj 3169 Layout
  • 原文地址:https://www.cnblogs.com/gabin/p/4020231.html
Copyright © 2011-2022 走看看