Spring&Spring MVC技术分享-使用Spring解耦
作者:
22-426
,
2022-03-23 15:29:38
,
所有人可见
,
阅读 178
C02_D01_UseSpringToDecouple-使用Spring解耦
//bean
public interface Animal {
void eat();
}
public class Dog implements Animal{
public Dog() {
System.out.println("实例化了Dog!!!");
}
@Override
public void eat() {
System.out.println("这是一只狗,狗吃骨头!");
}
}
public class Pig implements Animal{
public Pig() {
System.out.println("实例化了Pig!!!");
}
@Override
public void eat() {
System.out.println("这是一只猪,猪吃饲料~");
}
}
public class Sheep implements Animal{
public Sheep() {
System.out.println("实例化了Sheep!!!");
}
@Override
public void eat() {
System.out.println("这是一只羊,羊吃草……");
}
}
public class SingleDog extends Dog{
public SingleDog() {
System.out.println("实例化了SingleDog!!!");
}
@Override
public void eat(){
System.out.println("这是一只单身狗,单身狗吃狗粮!");
}
}
//config-beans.xml
<!-- 如果需要将程序中使用Dog的地方全部换成Pig,不需要修改每个使用了Dog的地方,直接将这里的bean修改为Pig类型即可 -->
<!-- 前提是使用了Dog的地方都是通过Spring容器获取Dog类型的bean -->
<bean id="animal" class="com.qdu.bean.Dog" />
<!-- <bean id="animal" class="com.qdu.bean.Pig" /> -->
//main
* *结合使用面向接口编程,使用IoC实现解耦 <br>
* *面向接口编程:方法声明在接口中,方法实现在类中
*
* @author 22-426
*/
public class Test_UseIoCToDecouple {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("config/beans.xml");
//尽可能使用更通用的java类型,如接口
//而不是具体实现类,有助于降低程序的耦合性
Animal animal1=(Animal)ctx.getBean("animal");
animal1.eat();
Animal animal2=(Animal)ctx.getBean("animal");
animal2.eat();
}
}