Data Binding은 2018년도 Jetpack 라이브러리의 일부로 소개되었다. 일단, 그 이전에 UI를 다루는 방식을 알아보자. 이전에는 코드내에서(보통 onCreate()나 onCreateView()) LayoutInflater를 이용하여 XML을 파싱 후 View 오브젝트로 변환하는 작업을 해야했다. UI를 구성하는 변환된 View 오브젝트는 트리형태로 되어있으며, 원하는 View를 얻어오려면 findViewById()등을 이용해 이 트리구조를 검색해야 가능했다. XML파싱도 검색도 모두 부하가 상당한 작업들이었다. 이를 개선하고자, Data Binding 라이브러리가…
[카테고리:] 코틀린
Kotlin 관련 메모
Kotlin: Delegated Properties
Kotlin 공식 문서를 보고 정리했다. 공식 문서 참조. property들의 값을 get(), set()으로 구현해야 하는 경우, 같은 형태의 property가 필요하면, 각 property마다 get(), set()을 구현해야 한다. 이런 경우, 한번만 구현해서 중복을 제거하면 좋을 것이다. 이는 delegate를 통해 가능해진다. 예를 들면 다음과 같은 케이스들이 존재한다. lazy properties : 값을 처음 가져올 때, 생성 및 계산이 이루어짐. observable…
Design Pattern: Command Pattern
객체에서 다른 객체로 request를 보낼 때, request 내용이 복잡해 지거나 확장이 필요하면, 프로토콜을 따로 설계하게된다. 그렇게 해야 보다 유연해지기 때문이다. request에 대한 프로토콜을 별도의 Command 오브젝트로 구현하는 방법이 바로 Command Pattern이다. request를 보내는 Invoker 객체는 이를 받는 Reciever 객체에 대한 정보가 없어도 되기 때문에(Command 객체가 갖고있다), 두 객체간 coupling을 제거할 수 있다. Command Pattern의 실제…
Design Pattern: Observer
블로그나 유튜브를 보면, 구독을 해놓고 새글이나 영상이 올라올 때 알람을 받는다. 이런 상호작용을 게시-구독(Publish-Subscribe)관계라고 한다. Observer pattern은 이처럼 observer를 등록해놓고 대상의 변화에 대한 알람을 받는 경우에 적용되는 design pattern이다. Observer pattern은 callback의 형태로 이미 많은 곳에서 사용하고 있고 경험해봤을 것이다. 안드로이드에서 BroadcastReceiver를 등록해 사용하는 것도 이런 형태의 하나라고 볼 수 있다. 하나의 데이터를 두고 여러방식의…
OOP: constructor and inheritance
상속과 관련해서 생성자는 어떻게 연결이 되는지 헷갈릴만한 포인트들이 있어 한 번 정리해 놓는다. Kotlin 코틀린은 생성자에 클래스이름을 쓰지않고 ‘constructor’라는 키워드를 쓴다. 여러 생성자를 가질 수 있으나, primary constructor는 클래스 첫 라인을 활용한다. ( Kotlin 공식문서 참조 ) 두번째 라인처럼 키워드를 안써줘도 된다. 또한, 세번째처럼 class property정의를 써서 추가적인 할당코드없이 간단하게 사용도 가능하다. 조금 당황스러울 수…