Skip to content

Instantly share code, notes, and snippets.

View gahfy's full-sized avatar

Gahfy gahfy

View GitHub Profile
class InitialState: State{
override fun parseCharacter(context: StateContext, character: Char){
when{
character == '+' || character == '-' -> {
context.setState(SignState())
}
character == '0' -> {
context.setState(ZeroState())
}
character in ('1'..'9') -> {
interface State{
fun parseCharacter(context: StateContext, character: Char)
val final: Boolean
}
class StateContext {
private var state: State? = null
fun setState(state: State?){
this.state = state
fun main(){
var counter = 0
val checkbox = CheckBox()
val printObserver = CheckboxObserver{ println("Checkbox have been clicked") }
var countObserver = CheckboxObserver{ counter++ }
// Nothing happens
checkbox.click()
checkbox.click()
checkbox.click()
checkbox.addObserver(countObserver)
class CheckBox(){
var isChecked: Boolean = false
private val observers = mutableListOf<CheckboxObserver>()
fun addObserver(observer: CheckboxObserver){
observers.add(observer)
}
fun removeObserver(observer: CheckboxObserver){
observers.remove(observer)
@gahfy
gahfy / Checkbox.kt
Last active December 11, 2020 08:49
fun interface CheckboxObserver{
fun notifyClick()
}
class CheckBox(){
var isChecked: Boolean = false
fun click(){
isChecked = !isChecked
}
}
fun main(){
val checkbox = CheckBox()
fun main(){
val frenchCheckBox = CheckBox()
val frenchTextView = TextView("Are you french?")
val mediator = FormMediator(frenchCheckBox, frenchTextView)
println("isChecked:${frenchCheckBox.isChecked} / text:${frenchTextView.getText()}")
frenchCheckBox.click()
println("isChecked:${frenchCheckBox.isChecked} / text:${frenchTextView.getText()}")
frenchTextView.click()
println("isChecked:${frenchCheckBox.isChecked} / text:${frenchTextView.getText()}")
class FormMediator(
private val checkbox: CheckBox,
private val textview: TextView
): Mediator{
init{
checkbox.setMediator(this)
textview.setMediator(this)
}
override fun notifyCheckboxClicked(){
@gahfy
gahfy / Form.kt
Last active December 11, 2020 08:31
class CheckBox(){
var isChecked: Boolean = false
private var mediator: Mediator? = null
fun click(){
isChecked = !isChecked
mediator?.notifyCheckboxClicked()
}
fun setMediator(mediator: Mediator){
interface Mediator{
fun notifyCheckboxClicked()
fun notifyTextViewClicked()
}