美文网首页
Spring: 解耦的理解

Spring: 解耦的理解

作者: Gascognya | 来源:发表于2020-10-10 12:04 被阅读0次

刚看到springIOC依赖注入不能很好地理解,为什么这样做就解耦了呢?

后来发现,重点在于使用方式上。通过接口与实现类分离,可以保证对象的灵活性。
例如:

public class Student { }
---------------------------------

<bean id="stu" class="com.demo.Student"/>

---------------------------------

@Test
public void estStudent() {
    ApplicationContext context = new ClassPathXmlApplicationContext("beanXML.xml");
    Student student = context.getBean("stu", Student.class);
}

如果这样使用,并不能做到最大限度的解耦。因为Student student = context.getBean("stu", Student.class);
这句仍然明确指定了Student类,虽然使用了IOC,但并没有达到预期效果。下面我们修改下。

public interface StudentInt { }

---------------------------------

public class StudentImpl implements StudentInt { }

---------------------------------

<bean id="stu" class="com.demo.StudentImpl"/>

---------------------------------

@Test
public void estStudent() {
    ApplicationContext context = new ClassPathXmlApplicationContext("beanXML.xml");
    StudentInt student = context.getBean("stu", StudentInt.class);
}

注意这里我们分开了StudentIntStudentImpl,分别为接口与其实现类。

我们先看下使用处,StudentInt student = context.getBean("stu", StudentInt.class);
这里只提到了StudentInt,并没有提到具体实现类,这正是利用多态的特性,完成了解耦。这段代码不再需要因为具体实现类的改动而改动。只要bean是实现了StudentInt的实习类就可以。

具体指定实现类,我们只需要修改xml中的bean即可。
依赖注入也是同样的道理,只不过主动关系改为了被动关系

相关文章

网友评论

      本文标题:Spring: 解耦的理解

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