Skip to content

Instantly share code, notes, and snippets.

@NsAveek
Last active March 6, 2019 15:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NsAveek/f0a8f0b8b26149197c423b8965caf53a to your computer and use it in GitHub Desktop.
Save NsAveek/f0a8f0b8b26149197c423b8965caf53a to your computer and use it in GitHub Desktop.
Interface for Strategy Design Pattern
interface IBaseStrategy {
fun isEnable(enable : Boolean)
}
interface IPendingStrategy : IBaseStrategy{
}
interface IErrorStrategy : IBaseStrategy{
var OnReUpload : (result : Result)-> Unit
}
interface IManageStrategy : IBaseStrategy{
var OnManage : (result : Result)-> Unit
}
when (getStatus(result)) {
"Error" -> {
errorStrategy.apply {
isEnable = true
OnReUpload = view.reUpload
}
}
"Pending" -> {
pendingStrategy.isEnable = true
}
else -> {
manageStrategy.isEnable = true
manageStrategy.OnManage = view.openManage
}
}
class ManageStrategy : IManageStrategy {
var isEnable = false
var primaryTextColor = true
var secondaryTextColor = false
override lateinit var OnManage : (result : Result)-> Unit
override fun isEnable(enableOrDisable: Boolean) {
isEnable = enableOrDisable
}
}
class PendingStrategy : IPendingStrategy {
var isEnable = false
var primaryTextColor = true
var secondaryTextColor = true
override fun isEnable(enableOrDisable: Boolean) {
isEnable = enableOrDisable
}
}
class ErrorStrategy : IErrorStrategy {
var isEnable = false
var primaryTextColor = false
var secondaryTextColor = false
override lateinit var OnReUpload : (result : Result)-> Unit
override fun isEnable(enableOrDisable: Boolean) {
isEnable = enableOrDisable
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment