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 }
  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/lonecloud/p/5930122.html
Copyright © 2011-2022 走看看