那么在引入角色接口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>