Kotlin, 옵저버 패턴 구현 +

Yebali·2021년 8월 15일
0

약간의_Kotlin

목록 보기
10/19

일반적인 옵저버 패턴 구현

옵저버 패턴은 이벤트를 기반으로 동작하는 모든 코드에서 광범위하게 쓰이므로 구조를 이해하는 것이 중요합니다.

interface EventListener {
    fun onEvent(count: Int)
}

class Counter(var listener: EventListener) {
    fun count() {
        for (i in 1..100) {
            if (i % 5 == 0)
            	listener.onEvent(i) // 특정 조건마다 이벤트 리스너를 호출
        }
    }
}

//인터페이스 구현체
class EventPrinter: EventListener {
    override fun onEvent(count: Int) {
        print("${count}-")
    }
    
    fun start() {
        val counter = Counter(this) //Counter에 EventListener인 자기 자신을 넘겨줌
        counter.count()
    }
}

fun main() {        
   EventPrinter().start()
}

익명객체 사용

interface EventListener {
    fun onEvent(count: Int)
}

class Counter(var listener: EventListener) {
    fun count() {
        for (i in 1..100) {
            if (i % 5 == 0)
            	listener.onEvent(i) // 특정 조건마다 이벤트 리스너를 호출
        }
    }
}

class EventPrinter {
    fun start() {
        //Counter안에 EventListener구현체 대신 익명 객체를 넣어줌
        val counter = Counter(object: EventListener {
            override fun onEvent(count: Int) {
                print("${count}-")
            }
        }) 
        
        counter.count()
    }
}

fun main() {        
    EventPrinter().start()
}
profile
머리에 다 안들어가서 글로 적는 중

0개의 댓글