那麼在引入角色接口LiuJianming之後,類與類之間的關係變爲:
在這種情況下,WuJianDao還是和角色LiuJianming、演員LiuDeHua之間存在耦合關係。
- 其一 控制
- 其二 反轉
Public class WuJianDao {
private LiuJianming ljm;
//1:注入劉建明的具體扮演者
public WuJianDao(LiuJianming ljm) {
this.ljm = ljm;
}
public void tianTai() {
ljm.declare(“我想做一個好人!”)
}
}
Public class Director {
public void direct() {
//2.指定角色的扮演者
LiuJianming ljm = new LiuDeHua();
//3.注入具體扮演者到劇本中
WuJianDao wjd = new WuJianDao(ljm);
wjd.tianTai();
}
}
Public class WuJianDao {
private LiuJianming ljm;
//1.屬性注入方法
public void setLjm(LiuJianmin ljm) {
this.ljm = ljm;
}
public void tianTai() {
ljm.declare(“我想做一個好人!”)
}
}
Public class Director {
public void direct() {
LiuJianming ljm = new LiuDeHua();
WuJianDao wjd = new WuJianDao();
//2.調用屬性Setter方法注入
wjd.setLjm(ljm);
wjd.tianTai();
}
Public interface ActorArrangable {
void injectLjm(LiuJianming ljm);
}
Public class WuJianDao
implements ActorArrangable {
private LiuJianming ljm;
//1.實現接口方法
public void injectLjm(LiuJianming ljm)
{this.ljm = ljm; }
public void tianTai() {
ljm.declare(“我想做一個好人!”)
}
}
Public class Director {
public void direct() {
LiuJianming ljm = new LiuDeHua();
WuJianDao wjd= new WuJianDao();
wjd.injectLjm(ljm);
wjd.tianTai();
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="ljm" class="cn.lovepi.chapter02.ioc.LiuDeHua"/>
<bean id="wjd" class="cn.lovepi.chapter02.ioc.WuJianDao"
p:geli-ref="ljm"/>
</beans>