Я пытаюсь создать Builder для действия. Причина в том, что эта деятельность может быть запущена разными способами. Я создал класс Builder следующим образом:
class ActivityBuilder {
private var showToolBar = false
private var postExecutable: (() -> Unit)? = null
fun showToolbar(boolean: Boolean) : ActivityBuilder {
this.showToolBar = boolean
return this
}
fun setPostExecutable(function: () -> Unit) : ActivityBuilder {
this.postExecute = function
return this
}
fun start(context: Context){
val intent = Intent(context, Activity::class.java)
context.startActivity(intent)
}
}
Идея состоит в том, чтобы вызывать что-то подобное и иметь доступ к этим полям внутри действия.
ActivityBuilder().showToolbar(false).setPostExecutable { { doSomething() } }.start(this)
Думаю, я мог бы также используйте сопутствующий объект, и он будет служить той же цели.
companion object Builder {
private var showToolBar = false
private var postExecute: (() -> Unit)? = null
fun showToolbar(boolean: Boolean) : Builder {
this.showToolBar = boolean
return this
}
fun setPostExecutable(function: () -> Unit) : Builder {
this.postExecute = function
return this
}
fun start(context: Context){
val intent = Intent(context, AuthActivity::class.java)
context.startActivity(intent)
}
}
Проблема в основном возникает из поля "postExecutable". Мне нужно вызвать функцию в определенный момент, но она не подлежит продаже, поэтому я не могу передать ее через намерение при запуске действия.
Если у кого-то есть решение, я ценю это!