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