属性表示状态而不是行为(Properties should represent state, not behavior) Kotlin中的属性(property)不同于Jav...
属性表示状态而不是行为(Properties should represent state, not behavior) Kotlin中的属性(property)不同于Jav...
异常与类型安全结果(Prefer null or Failure result when the lack of result is possible) 你可能觉得,这一条的...
明确参数和状态的约束条件(Specify your expectations on arguments and state) 这条的意思是说,对于函数传入的参数我们应该进行必...
为可读性设计(Design for readability) 可读性是一种半玄学的话题,它的评价标准常常取决于上下文环境和你对一门语言的了解程度。来看一个具体的例子: 以上两...
限制可变性(Limit mutability) 只读属性 val 只读属性val可以改变,但是只读属性并没有提供修改的切入点,而修改切入点才是引起同步或者其他问题的主要原因。...
最近在看一本书——Effective Kotlin[https://leanpub.com/effectivekotlin/],听名字就知道是Effective Java的K...
0. 前言 最近加入了一家做安全领域的公司,接触到了一些密码学的东西,尤其是国密算法,可能国内做这个方向的公司并不多,我发现国内关于国密算法的介绍都很浅,对于其背后数学及密码...
单例设计模式就不用多介绍了,说是大家最熟悉的设计模式也不为过,在Effective Java中有两条与之相关:第3条用私有构造器或者枚举类型强化 Singleton 属性,第...
@MycroftWong 官方之前承认过,dagger.android是失败的,这个就是替代方案
Dagger小技巧之私有依赖前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...
原型设计模式是一种很简单的设计模式,其实就是通过clone方法去复制一个对象,也就是Java中的Cloneable接口。原型模式是很多语言的特性之一,包括Java和Kotli...
@MycroftWong 千层饼警告,一层更比一层深,话说Dagger就是这样,稀烂的文档,失败的dagger.android,明明是简单的DI,整的学习曲线无比陡峭,但是这种生成代码式的DI在性能上无人能及。现在情况已经不太一样了,因为Kotlin Multi-Platform来了,像是Kodein已经实现了KMP,Koin也在向KMP靠拢,Dagger这种Java特定平台的东西,扩展性肯定要差一些,如果Kotlin有多平台下的注解处理器,那还是可能实现类Dagger的DI框架,不过目前来看还不太可能,推荐你关注一下Koin,或许会有不一样的思路。
Dagger小技巧之私有依赖前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...
@MycroftWong 使用Module注入User并不一定只在Module中使用,不然也不会有私有依赖这一说,Component之间的关系决定了User的使用范围。虽然这四种方式本质上可以看作一样的,但是能使用1的肯定推荐使用1,因为简洁,能使用3,4的也不推荐使用2,还是因为简洁,性能也稍好。
Dagger小技巧之私有依赖前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...
@MycroftWong correct
Dagger小技巧之私有依赖前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文: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小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...
然后,向Component添加依赖对象有几种方式,1.构造函数@Inject 2.传统Module方式 3.Component Builder 4.Component Factory。方式4是Dagger后来添加的,本质上跟方式3是一样的,你可以忽略。像你这种问题,使用方式3最合适。大致如此:
@SubComponent
interface UserComponent {
@Subcomponent.Builder
interface Builder {
@BindsInstance
fun user(user: User): Builder
fun build(): UserComponent
}
}
这个User在你创建UserComponent的时候必须动态的传进Component中,这就省着通过创建一个Module传输了。
Dagger小技巧之私有依赖前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...