标签:
首先:
1.依赖注入就是一种在一个需要使用它的类中定义一个接口,该类中不管这个接口是怎么实现的,只是执行这个方法
2.依赖注入可以让该类实现通用
代码:
1.定义一个饮料接口
1 package cn.lonecloud.model; 2 /** 3 * 创建一个食物接口 4 * @Title: IDrink.java 5 * @Package cn.lonecloud 6 * @Description: 7 * @author lonecloud 8 * @date 2016年10月4日 上午9:39:31 9 */ 10 public interface IDrink { 11 public void drink(); 12 }
2.书写它的实现类
1 package cn.lonecloud.model; 2 3 4 /** 5 * 牛奶 6 * @Title: milk.java 7 * @Package cn.lonecloud 8 * @Description: 9 * @author lonecloud 10 * @date 2016年10月4日 上午9:42:17 11 */ 12 public class Milk implements IDrink { 13 14 @Override 15 public void drink() { 16 // TODO Auto-generated method stub 17 System.out.println("喝牛奶"); 18 } 19 20 21 }
1 package cn.lonecloud.model; 2 3 4 public class Water implements IDrink { 5 6 @Override 7 public void drink() { 8 // TODO Auto-generated method stub 9 System.out.println("喝水"); 10 } 11 12 }
1 package cn.lonecloud.model; 2 3 public class Coffee implements IDrink { 4 5 @Override 6 public void drink() { 7 // TODO Auto-generated method stub 8 System.out.println("喝的是咖啡"); 9 } 10 11 }
这三个实现类是对这个饮料接口的实现
3.书写顾客类
1 package cn.lonecloud; 2 3 import cn.lonecloud.model.IDrink; 4 5 /** 6 * 顾客类 7 * @Title: Customer.java 8 * @Package cn.lonecloud 9 * @Description: 10 * @author loneloud 11 * @date 2016年10月4日 上午9:47:32 12 */ 13 public class Customer { 14 /** 15 * 使用这个进行将酒依赖注入到顾客的饮料中 16 * @param myDrink 17 */ 18 public Customer(IDrink myDrink) { 19 // TODO Auto-generated constructor stub 20 this.myDrink=myDrink; 21 } 22 public Customer() { 23 // TODO Auto-generated constructor stub 24 } 25 public void sendDrink(IDrink drink){ 26 this.myDrink=drink; 27 } 28 /** 29 * 顾客选择要喝的饮料 30 */ 31 private IDrink myDrink; 32 /** 33 * 顾客喝饮料 34 * @Description: 35 */ 36 public void drinking(){ 37 myDrink.drink(); 38 } 39 }
顾客喝饮料,定义接口然后可以采用定义方法或者构造方法对这个饮料进行实现。
5.测试方法
1 package cn.lonecloud; 2 3 import org.junit.Test; 4 5 import cn.lonecloud.model.Coffee; 6 import cn.lonecloud.model.IDrink; 7 8 public class CustomerTest { 9 10 /** 11 * 使用这种的话可以使得顾客类变成通用 12 * @Description: 13 */ 14 @Test 15 public void testByConstract(){ 16 IDrink drink=new Coffee(); 17 //这里可以实现对饮料的注入 18 Customer customer=new Customer(drink); 19 customer.drinking(); 20 } 21 /** 22 * 使用方法体进行注入 23 * @Description: 24 */ 25 @Test 26 public void testByMethod(){ 27 IDrink drink=new Coffee(); 28 Customer customer=new Customer(); 29 //这里可以实现对饮料的注入 30 customer.sendDrink(drink); 31 customer.drinking(); 32 } 33 }
标签:
原文地址:http://www.cnblogs.com/lonecloud/p/5930122.html