隐藏页面特效

Spring 依赖注入的理解

首先:

  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 }

 


__EOF__

本文作者lonecloud
本文链接https://www.cnblogs.com/lonecloud/p/5930122.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   lonecloud  阅读(1227)  评论(0编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 趁着过年的时候手搓了一个低代码框架
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现
我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:lonecloud,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply
点击右上角即可分享
微信分享提示