Spring DI模式 小例子

       今儿跟同事讨论起来spring早期的,通过大篇幅xml的配置演变到今天annotation的过程,然后随手写了个小例子,感觉还不错,贴到这里留个纪念。
例子就是用JAVA API的方式,演示了一下DI的注入模式,但因我对设计模式了解的比较少,那本书躺了很久都没时间去看,所以理解的有些幼稚,随后等复习到spring那的时候,详细会有更好的答案。

package com.test;

/**
 * Created with IntelliJ IDEA.
 * User: 菜鸟大明
 * Date: 14-6-30
 * Time: 下午12:06
 * To change this template use File | Settings | File Templates.
 */

/**
 * 接口Word,其中有一个spell方法。
 */
interface Word{
    String spell(String x,String y);
}

/**
 * 开始编写上下文
 */
public class SpringDISample{
    // 声明一个句柄
    Word word;
    // 将句柄指向实例,也就是Word的实现类。
    public void setWord(Word word) {
        this.word = word;
    }
    // 核心的方法say,对外暴露一个接口方法,spell()。
    public void say (){
        System.out.println("before");
        System.out.println(word.spell("小明", "小熊"));
        System.out.println("after");
    }
}

/**
 * Word接口的实现类,填充spell的内容。
 */
class ImpWord1 implements Word{
    @Override
    public String spell(String x, String y) {
        return x + "的朋友是" + y;
    }
}

/**
 * Word接口的实现类,填充spell的内容。
 */
class ImpWord2 implements Word{
    @Override
    public String spell(String x, String y) {
        return x + "的同事是" + y;
    }
}

/**
 *  相当于springDI的容器。
 */
class Main {
    // 容器启动
    public static void main(String[] args) {
        // 创建DI容器
        SpringDISample springDISample = new SpringDISample();
        // new出Word的实现类ImpWord1,并注入到springDISample的say方法里。
        springDISample.setWord(new ImpWord1());
        springDISample.say();
        System.out.println("***************************************");
        // new出Word的实现类ImpWord2,并注入到springDISample的say方法里。
        springDISample.setWord(new ImpWord2());
        springDISample.say();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值