observer Pattern : 설명참고
한마디로 말하자면, 어떤 이벤트가 발생하면 observer으로 등록된 객체에게 알려준다. 그러면 observer으로 등록된 객체는 미리 구현된 어떤 기능을 하게된다.
솔직히 나는 설명만 보고는 뭔소리인지 하나도 몰랐다.
직접 코드로 보면 아주 쉽다!
interface Observable {
fun registerObserver(observer: Observer) // attach, subscribe
fun unregisterObserver(observer: Observer) // detach, unsubscribe
fun notifyToObserver()
}
interface Observer {
fun update() // update, notify
}
class MainActivity : AppCompatActivity(), Observable {
private lateinit var binding: ActivityMainBinding
private val observerList = arrayListOf<Observer>() //observer할 객체를 저장할 리스트를 만든다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
}
override fun registerObserver(observer: Observer) {
observerList.add(ObserverActivity()) //observer할 객체를 저장한다.
}
override fun unregisterObserver(observer: Observer) {
//구독 취소
}
override fun notifyToObserver() {
binding.button.setOnClickListener {
observerList.forEach {
it.update() //등록된 observer에게 notify
}
}
}
}
class ObserverActivity : AppCompatActivity(), Observer{
//observable에서 notify가 오면 update 된다.
override fun update() {
Log.d("LOGGING","update 되었습니다.")
}
}