第57講:Scala中Dependency Injection實戰詳解學習筆記
1.Dependency Injection解析
2.Dependency Injection代碼實戰
spring/OSJI都用了依賴注入
寫程式或系統時,可能由不同元件組裝起來的,不同元件間是有依賴關系的。
元件依賴的其他元件的接口,實際對其他元件的依賴關系是
在程式運作時注入的。是以叫依賴注入。
自身類型self type可以表達被限定的狀況。
依賴注入很多時候要使用自身類型。
java做依賴注入很複雜。而在scala中直接使用self type就可以了。
trait Logger {def log(msg: String)}
trait Auth {
auth: Logger => //Auth的自身類型。auth必須實作Logger,
def act(msg: String){
log(msg)
}
}
object DI extends Auth with Logger { //DI必須既是Auth類型又是Logger類型
override def log(msg: String) = println(msg);} //override寫不寫都可以。
object Dependency_Injection {
//object是靜态的,裡面的所有方法也都是靜态的。
def main(args:Array[String]) {
DI.act("I hope you will like it") //為什麼可以直接使用DI.act?是因為DI繼承了Auth和Logger
}
}
java中需要寫入xml,弊端是編譯器無法檢測配置是否正确。
scala中的自身類型可以由編譯器進行檢查子產品間的依賴關系是否被滿足。
依賴時可以規定實作者或繼承者必須實作什麼方法。這就是鴨子類型。非常強悍。
以上内容是從王家林老師DT大資料課程第57講的學習筆記。
DT大資料微信公衆賬号:DT_Spark
王家林老師QQ:1740415547
王家林老師微信号:18610086859
百度網盤共享的DT大資料夢工廠王家林老師第1-91講的視訊内容:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group
第56講51CTO視訊:http://edu.51cto.com/index.php?do=lesson&id=68886
酷6視訊:http://v.ku6.com/show/ANFXsbTUmCbkxfdNICONag...html
愛奇藝視訊:http://www.iqiyi.com/w_19rrt84uth.html