- 設(shè)計(jì)模式之禪
- 秦小波
- 450字
- 2019-01-02 03:55:47
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é)的例子就采用了接口聲明依賴的方式,該方法也叫做接口注入。
推薦閱讀
- Learn TypeScript 3 by Building Web Applications
- The Modern C++ Challenge
- MySQL 8從入門到精通(視頻教學(xué)版)
- 少年輕松趣編程:用Scratch創(chuàng)作自己的小游戲
- 算法訓(xùn)練營:入門篇(全彩版)
- SQL for Data Analytics
- Kubernetes源碼剖析
- Android移動(dòng)應(yīng)用開發(fā)項(xiàng)目教程
- Microsoft Dynamics GP 2013 Cookbook
- PhantomJS Cookbook
- HTML5 Game Development by Example:Beginner's Guide(Second Edition)
- 匯編語言程序設(shè)計(jì)
- 區(qū)塊鏈原理、設(shè)計(jì)與應(yīng)用
- Java程序員面試筆試真題庫
- AVR單片機(jī)C語言應(yīng)用100例