在Spring中提倡接口编程,这样可以实现模块的松散耦合。
实例:
public interface Language{
public void say();
}
public classChineseLanguage implements Language {
@Override
public void say() {
// TODOAuto-generated method stub
System.out.println("你好");
}
}
public classEnglishLanguage implements Language {
public void say() {
System.out.println("hello");
}
}
<bean id="chinese" class="bean1.ChineseLanguage">
</bean>
<bean id="english" class="bean1.EnglishLanguage">
</bean>
<bean id="p" class="bean1.People">
<constructor-arg ref="chinese"></constructor-arg>
</bean>
当我们需要不同的语言时,直接改变ref的值即可,这样就不用去改变我们的代码。
另外一种接口编程就是实现同一个接口的两个类配置bean时,具有相同的id,在我们的main方法中,使用接口获得实例,当我们需要不同的实现类时,就将它们进行相互转换,注意这两个bean不会同时出现在我们的配置文件中。例如:
<bean id="language"class="bean1.ChineseLanguage">
</bean>
<bean id=" language " class="bean1.EnglishLanguage">
</bean>
ApplicationContext ac=newClassPathXMLApplicationContext();
Language lan=(EnglishLanguage)ac.getBean(“language”);
//lan=(ChineseLanguage)lan;