17. 익명객체와 옵저버 패턴
2021. 5. 11. 21:13
이벤트란 안드로이드에서 키의 입력, 터치의 발생, 데이터의 수신 등 함수로 직접 요청하지 않지만 시스템 또는 루틴에 의해서 발생하게 되는 동작을 가르킨다. 이 방식은 많이 사용하는 방식이므로 구조를 이해하는 것이 중요하다.
1. 옵저버 패턴 (Observer Pattern)
- 이벤트가 발생할 때마다 즉각적으로 처리할 수 있도록 만드는 프로그래밍 패턴
- 2개의 클래스가 필요
- 이벤트를 수신하는 클래스와 이벤트의 발생 및 전달을 하는 클래스가 인터페이스를 통해 소통
- 이 인터페이스를 Observer, 코틀린에서는 listener라고 부른다.
- 이벤트를 넘겨주는 행위를 Callback이라고 한다.
이벤트를 수신해서 출력하는 EventPrinter 클래스와 숫자를 카운트하며 5의 배수마다 이벤트를 발생시키는 Counter 클래스와 두 클래스를 연결시키는 인터페이스 EventListener가 있다.
위의 코드에서 Counter가 5의 배수마다 이벤트를 발생시키고 EventPrinter 내에서 구현된 EventListener에서 발생된 이벤트를 출력한다.
위 코드에서 쓰인 this는 객체자신을 참조하는 키워드이다.
2. 익명객체 (Anonymous Object)
EventPrinter가 EventListener를 상속받지않고 구현하는 방식으로 임시로 만든 별도의 EventListener 객체를 넘겨줄 수 있다. 이 방법을 통해 인터페이스를 구현한 객체를 코드 중간에 즉시 생성하여 사용할 수 있다.
익명객체이므로 EventListener를 상속받지 않고 Counter 인스턴스를 만들 때 위의 코드처럼 파라미터에 익명객체를 넘긴다.
object 키워드 뒤에 이름없이 바로 콜론 후 EventListener를 상속받도록하고 중괄호를 친후 onEvent함수를 override한다.
'Kotlin 문법' 카테고리의 다른 글
19. 제네릭(generic) (0) | 2021.05.11 |
---|---|
18. 클래스의 다형성 (0) | 2021.05.11 |
16. 오브젝트 (0) | 2021.05.05 |
15. 스코프 함수 (0) | 2021.05.05 |
14. 고차함수와 람다함수 (0) | 2021.05.04 |