通过getter实现依赖注入

依赖注入是面向接口编程的前提,将对象的使用和对象的创建分离。使用者只需知道接口,而不必关心具体实现是哪个类。

例如:

public interface Job {
public boolean doJob();
}

public class SweepJob {

private int garbage = 10;

public boolean doJbo() {
System.out.println("扫地");
garbage--;
return garbage < 3;
}
}

public class Worker {

private Job job;

public void work() throws Exception {
while (!job.doJob()) {
System.out.println("未完成,抱怨");
Thread.sleep(100);
}
}

}


Worker依赖job,而不依赖SweepJob,但是Worker有必须取到一个SweepJob对象,这时就需要一个外部的容器来注入,Worker也要做相应的修改来接收注入。
1. 构造注入

public class Worker {

private Job job;

public Worker(Job job) {
this.job = job;
}
...
}

public class AppContext {

private SweepJob job;
private Worker worker;

public void createBeans() {
job = new SweepJob();
worker = new Worker(job);
}
}


2. setter注入

public class Worker {

private Job job;

public void setJob(Job job) {
this.job = job;
}
...
}

public class AppContext {

private SweepJob job;
private Worker worker;

public void createBeans() {
job = new SweepJob();
worker = new Worker();
worker.setJob(job);
}
}


3. getter注入,也是写这篇日志的目的所在,今天看webx框架了解到的,感觉很有新意。

public abstruct class Worker {

public abstruct Job getJob();

public void work() throws Exception {
while (!getJob().doJob()) {
System.out.println("未完成,抱怨");
Thread.sleep(100);
}
}
}

public class AppContext {

private SweepJob job;
private Worker worker;

public void createBeans() {
job = new SweepJob();
worker = new Worker() {
public Job getJob() {
return job;
}
};
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值