/**
* Created by FangJu on 2020/1/31
*/
typealias OnConfirm = () -> Unit
typealias OnCancel = () -> Unit
private val EmptyFunction = {}
open class Notification(
val title: String,
val content: String
)
class ConfirmNotification(title: String, content: String, val onConfirm: OnConfirm, val onCancel: OnCancel) :
Notification(title, content) {
}
interface SelfType<Self> {
val self: Self
get() = this as Self
}
open class NotificationBuilder<Self : NotificationBuilder<Self>> : SelfType<Self> {
protected var title: String = ""
protected var content: String = ""
fun title(title: String): Self {
this.title = title
return self
}
fun content(content: String): Self {
this.content = content
return self
}
open fun build(): Notification {
return Notification(title, content)
}
}
class ConfirmNotificationBuilder : NotificationBuilder<ConfirmNotificationBuilder>() {
protected var onConfirm: OnConfirm = EmptyFunction
protected var onCancel: OnCancel = EmptyFunction
fun onConfirm(onConfirm: OnConfirm): ConfirmNotificationBuilder {
this.onConfirm = onConfirm
return this
}
fun onCancel(onCancel: OnCancel): ConfirmNotificationBuilder {
this.onCancel = onCancel
return this
}
override fun build(): ConfirmNotification {
return ConfirmNotification(title, content, onConfirm, onCancel)
}
}
fun main() {
ConfirmNotificationBuilder()
.title("修改名字")
.content("内容")
.onCancel {
println("onCancel")
}
.onConfirm {
println("onConfirm")
}
.build()
.onCancel()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。