Created
April 3, 2020 01:24
-
-
Save miguelfermin/3a3d48a38126bd7fbf98225ee374b5e2 to your computer and use it in GitHub Desktop.
Model with multi-listeners.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface OnModelChangeListener { | |
fun onModelChangeName(model: Model, name: String) | |
} | |
class Model { | |
var name = "" | |
set(value) { | |
field = value | |
publishChangedName(value) | |
} | |
private var listeners = mutableMapOf<String, OnModelChangeListener>() | |
fun addListener(listener: OnModelChangeListener) { | |
val key = listener.hashCode().toString() | |
listeners[key] = listener | |
} | |
fun removeListener(listener: OnModelChangeListener) { | |
val key = listener.hashCode().toString() | |
listeners.remove(key) | |
} | |
fun publishChangedName(name: String) { | |
listeners.forEach { (_, value) -> | |
value.onModelChangeName(this, name) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment