官术网_书友最值得收藏!

3.3 依賴的三種寫法

依賴是可以傳遞的,A對象依賴B對象,B又依賴C,C又依賴D……生生不息,依賴不止,記住一點(diǎn):只要做到抽象依賴,即使是多層的依賴傳遞也無所畏懼!

對象的依賴關(guān)系有三種方式來傳遞,如下所示。

1.構(gòu)造函數(shù)傳遞依賴對象

在類中通過構(gòu)造函數(shù)聲明依賴對象,按照依賴注入的說法,這種方式叫做構(gòu)造函數(shù)注入,按照這種方式的注入,IDriver和Driver的程序修改后如代碼清單3-11所示。

代碼清單3-11 構(gòu)造函數(shù)傳遞依賴對象

public interface IDriver {
     //是司機(jī)就應(yīng)該會(huì)駕駛汽車
     public void drive();
}
public class Driver implements IDriver{
     private ICar car;
     //構(gòu)造函數(shù)注入
     public Driver(ICar _car){
             this.car=_car;
     }
     //司機(jī)的主要職責(zé)就是駕駛汽車
     public void drive(){
             this.car.run();
     }
}

2.Setter方法傳遞依賴對象

在抽象中設(shè)置Setter方法聲明依賴關(guān)系,依照依賴注入的說法,這是Setter依賴注入,按照這種方式的注入,IDriver和Driver的程序修改后如代碼清單3-12所示。

代碼清單3-12 Setter依賴注入

public interface IDriver {
     //車輛型號
     public void setCar(ICar car);
     //是司機(jī)就應(yīng)該會(huì)駕駛汽車
     public void drive();
}
public class Driver implements IDriver{
     private ICar car;
     public void setCar(ICar car){
             this.car=car;
     }
     //司機(jī)的主要職責(zé)就是駕駛汽車
     public void drive(){
             this.car.run();
     }
}

3.接口聲明依賴對象

在接口的方法中聲明依賴對象,3.2節(jié)的例子就采用了接口聲明依賴的方式,該方法也叫做接口注入。

主站蜘蛛池模板: 峨眉山市| 社会| 方正县| 双辽市| 察哈| 饶阳县| 丁青县| 宜阳县| 洪泽县| 思茅市| 姜堰市| 满城县| 怀来县| 惠水县| 法库县| 康定县| 土默特右旗| 阿克陶县| 阿拉善左旗| 梁河县| 六安市| 阿克| 仁布县| 平阳县| 夹江县| 芮城县| 敦化市| 客服| 泽州县| 靖宇县| 大埔区| 治多县| 玉门市| 肃宁县| 济南市| 西乌| 葵青区| 阿克苏市| 龙岩市| 罗田县| 长岛县|