屬性表示狀態(tài)而不是行為(Properties should represent state, not behavior) Kotlin中的屬性(property)不同于Jav...
屬性表示狀態(tài)而不是行為(Properties should represent state, not behavior) Kotlin中的屬性(property)不同于Jav...
異常與類型安全結(jié)果(Prefer null or Failure result when the lack of result is possible) 你可能覺得,這一條的...
明確參數(shù)和狀態(tài)的約束條件(Specify your expectations on arguments and state) 這條的意思是說,對于函數(shù)傳入的參數(shù)我們應該進行必...
為可讀性設計(Design for readability) 可讀性是一種半玄學的話題,它的評價標準常常取決于上下文環(huán)境和你對一門語言的了解程度。來看一個具體的例子: 以上兩...
限制可變性(Limit mutability) 只讀屬性 val 只讀屬性val可以改變,但是只讀屬性并沒有提供修改的切入點,而修改切入點才是引起同步或者其他問題的主要原因。...
0. 前言 最近加入了一家做安全領域的公司,接觸到了一些密碼學的東西,尤其是國密算法,可能國內(nèi)做這個方向的公司并不多,我發(fā)現(xiàn)國內(nèi)關于國密算法的介紹都很淺,對于其背后數(shù)學及密碼...
單例設計模式就不用多介紹了,說是大家最熟悉的設計模式也不為過,在Effective Java中有兩條與之相關:第3條用私有構(gòu)造器或者枚舉類型強化 Singleton 屬性,第...
@MycroftWong 官方之前承認過,dagger.android是失敗的,這個就是替代方案
Dagger小技巧之私有依賴前言 偶然間看到了這個關于Dagger小技巧的系列,很實用,也不復雜,在此我搬運轉(zhuǎn)述一下。本文并非翻譯,只是概述,想要更詳細地了解,請查看原文:Dagger Party Tr...
原型設計模式是一種很簡單的設計模式,其實就是通過clone方法去復制一個對象,也就是Java中的Cloneable接口。原型模式是很多語言的特性之一,包括Java和Kotli...
@MycroftWong 千層餅警告,一層更比一層深,話說Dagger就是這樣,稀爛的文檔,失敗的dagger.android,明明是簡單的DI,整的學習曲線無比陡峭,但是這種生成代碼式的DI在性能上無人能及?,F(xiàn)在情況已經(jīng)不太一樣了,因為Kotlin Multi-Platform來了,像是Kodein已經(jīng)實現(xiàn)了KMP,Koin也在向KMP靠攏,Dagger這種Java特定平臺的東西,擴展性肯定要差一些,如果Kotlin有多平臺下的注解處理器,那還是可能實現(xiàn)類Dagger的DI框架,不過目前來看還不太可能,推薦你關注一下Koin,或許會有不一樣的思路。
Dagger小技巧之私有依賴前言 偶然間看到了這個關于Dagger小技巧的系列,很實用,也不復雜,在此我搬運轉(zhuǎn)述一下。本文并非翻譯,只是概述,想要更詳細地了解,請查看原文:Dagger Party Tr...
@MycroftWong 使用Module注入User并不一定只在Module中使用,不然也不會有私有依賴這一說,Component之間的關系決定了User的使用范圍。雖然這四種方式本質(zhì)上可以看作一樣的,但是能使用1的肯定推薦使用1,因為簡潔,能使用3,4的也不推薦使用2,還是因為簡潔,性能也稍好。
Dagger小技巧之私有依賴前言 偶然間看到了這個關于Dagger小技巧的系列,很實用,也不復雜,在此我搬運轉(zhuǎn)述一下。本文并非翻譯,只是概述,想要更詳細地了解,請查看原文:Dagger Party Tr...
@MycroftWong correct
Dagger小技巧之私有依賴前言 偶然間看到了這個關于Dagger小技巧的系列,很實用,也不復雜,在此我搬運轉(zhuǎn)述一下。本文并非翻譯,只是概述,想要更詳細地了解,請查看原文:Dagger Party Tr...
更常見的可能是這個例子,AppComponent 常常需要Application Context,可以通過Module的方式注入,但是更推薦使用Builder的方式:
@Component
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
}
Dagger小技巧之私有依賴前言 偶然間看到了這個關于Dagger小技巧的系列,很實用,也不復雜,在此我搬運轉(zhuǎn)述一下。本文并非翻譯,只是概述,想要更詳細地了解,請查看原文:Dagger Party Tr...
然后,向Component添加依賴對象有幾種方式,1.構(gòu)造函數(shù)@Inject 2.傳統(tǒng)Module方式 3.Component Builder 4.Component Factory。方式4是Dagger后來添加的,本質(zhì)上跟方式3是一樣的,你可以忽略。像你這種問題,使用方式3最合適。大致如此:
@SubComponent
interface UserComponent {
@Subcomponent.Builder
interface Builder {
@BindsInstance
fun user(user: User): Builder
fun build(): UserComponent
}
}
這個User在你創(chuàng)建UserComponent的時候必須動態(tài)的傳進Component中,這就省著通過創(chuàng)建一個Module傳輸了。
Dagger小技巧之私有依賴前言 偶然間看到了這個關于Dagger小技巧的系列,很實用,也不復雜,在此我搬運轉(zhuǎn)述一下。本文并非翻譯,只是概述,想要更詳細地了解,請查看原文:Dagger Party Tr...