咱也体验一把DI

作者: x_zhaohu | 来源:发表于2016-08-21 17:37 被阅读221次

说在前面:体验一把,小记一下。别回头打的连我妈都认不出来了,哈哈。

一位大师曾经说过:”人有分工不同,没有高低贵贱之分"。然而我觉得人生下来就分三六九等。
下面举个例子:一个初级程序员在公司做什么捏?
有什么构思呢?最起码的是可扩展吧,那就抽象出来,面向接口编程喽。

思路:

  • Coder(接口)
  • primaryCoder implements Coder(实现类)
  • Work (接口)
  • primaryWork implements Work(实现类)

基于java的demo(就是普通的撒)

//Coder.java
package test;

public interface Coder {
    void coding();
}

//PrimaryCoder.java
package test;

public class PrimaryCoder implements Coder {
    
    private Work work;
    
    public PrimaryCoder(Work work) {
        this.work = work;
    }
    
    @Override
    public void coding() {
        work.toDoing();
    }
}

//Work.java
package test;

public interface Work {
    void toDoing();
}

//Primary.java
package test;

public class PrimaryWork implements Work {
    
    private String task;

    public PrimaryWork(String task) {
        this.task = task;
    }
    @Override
    public void toDoing() {
        System.out.println("write java about api...");
    }
}

//Main.java
package test;

public class Main {
    public static void main(String[] args) {
        Work pw = new PrimaryWork("java");
        Coder coder = new PrimaryCoder(pw);
        coder.coding();
    }
}

这个demo体会一下面向接口编程就好啦。

基于SpringBoot的demo(springboot搭架子容易啊)

所以先把架子搭起来,不然下面的代码演示不了。

//Coder.java
package com.sprint.learnBean;

public interface Coder {
    void coding();
}

//PrimaryCoder.java
package com.sprint.learnBean;

public class PrimaryCoder implements Coder {
    
    private Work work;
    
    public PrimaryCoder(Work work) {
        this.work = work;
    }
    
    @Override
    public void coding() {
        work.toDoing();
    }
}

//Work.java
package com.sprint.learnBean;

public interface Work {
    void toDoing();
}

//PrimaryWork.java
package com.sprint.learnBean;

import java.io.PrintStream;
public class PrimaryWork implements Work {
    
//  private String task;
    private PrintStream printStream;
/*  public PrimaryWork(String task) {
        this.task = task;
    }
*/
    public PrimaryWork(PrintStream printStream) {
        this.printStream = printStream;
    }
    @Override
    public void toDoing() {
        System.out.println("write java about api...");
    }
}

//Config.java
ackage com.sprint.learnBean;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
@Configuration
public class Config {
    
    @Bean
    public Coder coderType(){
        return new PrimaryCoder(primaryWork());
    }

    @Bean
    public Work primaryWork() {
        return new PrimaryWork(System.out);
    }
}

//Main.java
package com.sprint.learnBean;

import org.springframework.web.bind.annotation.*;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@RestController
public class Main {

    @RequestMapping("/learnbean")
    public String index() {
        AnnotationConfigApplicationContext afc = new AnnotationConfigApplicationContext(Config.class);
        Coder coder = afc.getBean(Coder.class);
        coder.coding();
        afc.close();
        return "learnbean";
    }
}

访问:http://localhost:8080/learnbean 控制台会打印write java about api...

重点来了:
感觉出有什么不同了吗?(用demo1 和 demo2来区分哈)
demo1 中Main.java 中必须先实例化一个PrimaryWork并通过上转型赋给Work。
demo2中然而并没有这么强耦合,通过@Bean产生对象并将其注入到IOC容器,依赖关系托付于IOC容器管理。
如题体验了一把,小记一下。欢迎拍砖。

参考资料:《spring in action》

相关文章

  • 咱也体验一把DI

    说在前面:体验一把,小记一下。别回头打的连我妈都认不出来了,哈哈。 一位大师曾经说过:”人有分工不同,没有高低贵贱...

  • 臣服

    人生就是一场体验 有人藐视咱,给咱体验; 有人敬仰咱,给咱体验; 有人如何待咱,咱如何待咱,都为了一个词”体验”。...

  • 咱也戏说一把张之洞

    清末时期有个好玩的对联:“八表经营,也不过山西禁烟,广东开赌;三洋会办,只落得侯官革职,丰润充军。”这前半段说的就...

  • 戈壁滩起风了

    文/午言 今天是周末 看着外面的风沙满天飞 天朦朦 地朦朦 天山也朦朦 咱算体验了一把 什么是 天上无飞鸟 地上无...

  • 咱也不懂,咱也不敢问

    咱也不懂,咱也不敢问 【不懂,问还是不问】 “咱也不懂,咱也不敢问”,这是一句在网络上很流行的一句话。用以表达围观...

  • 涛哥9.11日记

    摄影为我一大爱好,虽然只懂皮毛但我早想体验一把上帝视角------无人机。终于在今年暑假,咱自己买了个大...

  • 体验不一样的异域风情,魔都清真美食来一发吧!

    传播异域文化,共享文明和谐。大家好,欢迎大家来到今天的专题。咱今天带大家体验一把西域风情,尝尝那些美味很清真的菜色...

  • 咱也不敢说,咱也不敢动~

    我躺在床上玩手机,忽然一个胳膊伸过来,一把就我的头勾过去,抱在怀里,我就那么瞪着眼睛等着。会不会醒?我能不能动?大...

  • 咱也不敢说,咱也不敢问

    作为一名简书新人,当然想让自己的文章让更多的人浏览。于是我尝试把自己的简书主页分享到微信群里,但当我通过外部链接访...

  • 燕清日记

    燕清日记 十二月二十六日 李老三颇有作为咱贴身侍卫的自觉,一把西凉刀,守在咱大帐外,也不知道从哪弄来的咱西凉刀。蹁...

网友评论

    本文标题:咱也体验一把DI

    本文链接:https://www.haomeiwen.com/subject/jchwsttx.html