spring 开发提倡接口编程,配合DI技术可以更好的减少层(程序)与层(程序)之间的解耦合

例子说明:
  任务:要求:
        1.打印机依赖纸张和墨盒
        2.纸张有A4和B5两种
        3.墨盒有彩色和黑色2种
        4.使用A4纸张和彩色墨盒打印指定内容
        5.使用B5纸张和黑色墨盒打印指定内容

        7.要求使用接口

代码:

package Ink;

public interface Ink {
   public String getInk();

}
package Ink;

public class Black_Ink implements  Ink{
    public String getInk()
    {
        return "黑白";
    }
}
package Ink;

public class Color_Ink implements Ink{
    public String getInk()
    {
        return "彩色";
    }
}

package Paper

package Paper;

public interface Paper {
    public String getPaper();
}
package Paper;

public class A4_Paper implements Paper{
    public String getPaper()
    {
        return "A5纸张";
    }
}
package Paper;

public class A5_Paper implements  Paper{
    public String getPaper()
    {
        return "A5纸张";
    }
}
package Print
package Print;

import Paper.Paper;
import Ink.Ink;

public class print {
   private Ink ink;
   private Paper paper;

    public void setInk(Ink ink) {
        this.ink = ink;
    }

    public void setPaper(Paper paper) {
        this.paper = paper;
    }
    public void print(String context)
    {
        System.out.print("使用"+ink.getInk()+"在"+paper.getPaper()+"上,打印:"+context);
    }
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

        <bean id="A4_Paper" class="Paper.A4_Paper"></bean>
        <bean id="Color_Ink" class="Ink.Color_Ink"></bean>

        <bean id="Print" class="Print.print">
            <property name="paper">
                <ref bean="A4_Paper" />
            </property>
            <property name="ink">
                <ref bean="Color_Ink"/>
            </property>
        </bean>

</beans>

package Test

package Test;

import Print.print;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String []args)
    {
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        print p=(print)context.getBean("Print");
        p.print("你好!");
    }
}
  通过上面的案例,我们可以体会到DI配合接口编程,确实可以减少层(web层)和业务层的耦合度