例子说明:
任务:要求:
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层)和业务层的耦合度