zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Ext.Net学习笔记02:Ext.Net用法概览
    Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
    【转】好的用户界面-界面设计的一些技巧
    发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容
    抢票季:吐槽12306 & 分享抢票经验
    2.5星|《解谜茑屋》:疑似企业公关稿,对话体,信息含量较低
    樊登推荐过的书15本,好书2本半
    一些黑猩猩会使用草药治病,疗效还不错:3.5星|邓巴《人类的算法》
    莫奈塞尚的知名度,主要归功于富豪画家卡耶博特的遗赠:4星|《引爆流行》
    4星|《猎药师》:五千年以来药物研发简史,作者是前一线科学家
  • 原文地址:https://www.cnblogs.com/lonecloud/p/5930122.html
Copyright © 2011-2022 走看看