일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- compose
- 디자인패턴 #
- 추상 팩토리
- android designsystem
- 코틀린
- 안드로이드 디자인시스템
- 함수형프로그래밍
- Observer Pattern
- ㅓ
- material3
- Singleton
- Abstract Factory
- Kotlin
- El
- 팩토리 메소드
- 디자인패턴
- Functional Programming
- 옵저버 패턴
- r
- 빌터패턴
- factory method
- PrototypePattern
- F
- 추상팩토리패턴
- ㅋㅁ
- 싱글톤
- builderPattern
- 프로토타입 패턴
- designPattern
- Design Pattern
- Today
- Total
목록전체 글 (333)
오늘도 더 나은 코드를 작성하였습니까?
코틀린은 어떤 언어 기능이 정해진 사용자 작성 함수와 연결되는 경우가 몇 가지 있다. 코틀린에서는 이런 언어 기능이 어떤 타입(class)과 연관되는 것이 아니라 특정 함수 이름과 연관된다. 예) 특정 클래스 안에 plus라는 이름의 메서드를 정의하면 그 클래스의 인스턴스에 대해 + 연산자를 사용할 수 있다. 언어의 기능( + 연산자 사용) 미리 정해진 이름의 함수(plus)를 연결해주는 기법을 코틀린에서는 관례(Convention)이라 한다. 언어기능을 타입에 의존하는 자바와 달리 코틀린은 함수의 이름에 의존한다. 이런 관례를 채택한 이유는 기존 자바 클래스를 코틀린 언어에 적용하기 위해서다. 기존의 자바 클래스가 구현하고 인터페이스는 이미 고정돼 있고 코틀린 쪽에서 자바 클래스가 새로운 인터페이스를 ..

널 가능성과 컬렉션 컬렉션 안에 널값을 넣을 수 있는지 여부는 어떤 변수의 값이 널이 될 수 있는지 여부와 마찬가지로 중요하다. 1. List = 리스트 자체는 항상 존재하며, 리스트의 각 원소는 널이 될 수 있다. 2. List? = 리스트가 null 일수는 있지만, 리스트가 참조가 존재한다면 그 원소는 전부 널 일수 없다. 3. List? = 리스트 자체가 널 일수도 있고 리스트가 존재하더라도 그 원소 역시 널 일수 있다. 3번과 같은 리스트는 널 값 검사를 List에 대해서 하고 그 원소를 참조할 때 역시 필요하다. fun addValidNumbers(numbers: List){ var sumOfValidNumbers = 0 var inValidNumbers =0 for(number in numbe..
안드로이드 아키텍쳐 컴포넌트인 ViewModel은 유용한 기능을 제공해주는 반면 사용에 제약도 따른다. 1. ViewModel은 절대로 Activity나 Fragmemt 또는 View의 Context를 참조해서는 안된다. 언제든 생성 및 파괴될수있는 객체의 참조를 ViewModel에게 유지시키는 일은 파괴된 Activity를 ViewModel에서 유지 시킴으로서 메모리 누수를 발생시킨다. 시스템의 Context가 필요한경우 AndroidViewModel을 사용해라. 2. ViewModel에서 안드로이드 프레임워크 코드를 참조하면안된다. 프레임 워크 코드를 참조하게되면 단위테스트가 불가능해진다. ViewModel은 View에 표현할 데이터및 비지니스 로직을 지녀야 한다. 3. Dagger2및 ViewMod..

CursorLoader와 같은 로더 클래스는 앱 UI의 데이터와 데이터베이스 간의 동기화를 유지하는 데 자주 사용된다. ViewModel을 몇 가지 클래스와 함께 사용하여 로더를 대체할 수 있습니다. ViewModel을 사용하면 UI 컨트롤러가 데이터 로드 작업에서 분리됩니다. 즉, 클래스 간에 강력한 참조가 적어집니다. 일반적인 로더 사용 방법 중 하나로, 앱이 CursorLoader를 사용하여 데이터베이스의 내용을 관찰할 수 있습니다. 데이터베이스에서 값이 변경되면 로더가 자동으로 데이터 새로고침을 트리거하고 UI를 업데이트합니다. ViewModel은 Room 및 LiveData와 함께 작업하여 로더를 대체합니다. ViewModel은 기기 구성이 변경되어도 데이터가 유지되도록 보장합니다. 데이터베이스..