일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- F
- Singleton
- Kotlin
- factory method
- 추상팩토리패턴
- Observer Pattern
- El
- Functional Programming
- ㅓ
- builderPattern
- 싱글톤
- 빌터패턴
- 추상 팩토리
- 함수형프로그래밍
- r
- ㅋㅁ
- 팩토리 메소드
- 디자인패턴
- 디자인패턴 #
- 옵저버 패턴
- a
- 코틀린
- Abstract Factory
- PrototypePattern
- designPattern
- Design Pattern
- 프로토타입 패턴
- Today
- Total
목록분류 전체보기 (327)
오늘도 더 나은 코드를 작성하였습니까?
코틀린이 제공하는 관례에 의존하는 특성 중에 독특하면서도 가장 강력한 기능인 위임 프로퍼티 delegated property 다. 백킹 필드에 단순히 값을 저장하는 것보다 더 복잡한 방식으로 동작하는 프로퍼티를 쉽게 구현 가능하다. 그 과정에서 접근자 로직을 매번 재 구현할 필요도 없다. 자신의 값을 필드가 아닌 데이터베이스 브라우저 세션 맵 등에 저장할 수 있다. 위임이란 객체가 직접 작업을 수행하지 않고 다른 도우미 객체가 그 작업을 처리하게 하는 디자인 패턴이다. 이런 도우미 객체를 위임객체라 부른다. by 뒤에 있는 식을 계산해서 위임에 쓰일 객체를 얻는다. 프로퍼티 위임 객체가 따라야 하는 관례를 따르는 모든 객체를 위임에 사용 가능하다. class Delegate{ operator fun ge..
구조 분해 선언(destructuring declaration) 복합적인 값을 분해해서 여러 다른 변수를 한꺼번에 초기화할 수 있다. data class Point(val x: Int, val y: Int) fun main() { val p = Point(10,20) val (x, y) = p println(x) println(y) } 내부에서 구조 분해 선언은 관례를 사용한다. 구조 분해 선언의 각 변수를 초기화하기 위해 componentN이라는 함수를 호출한다. N은 구조 분해 선언에 있는 변수 위치에 따라붙는 번호다. val (a, b) = p ------> val a = p.component1() val b = p.component2() data 클래스의 주 생성자에 들어있는 프로퍼티에 대해서는 ..
컬렉션을 다룰 때 가장 많이 쓰는 연산은 인덱스를 사용해 원소를 읽거나 쓰는 연산과 어떤 값이 컬렉션에 포함되어 있는지 확인하는 연산이다. 인덱스로 원소에 접근: get set 코틀린에서는 인덱스 연산자도 관례를 따른다. 인덱스 연산자를 사용해 원소를 읽는 연산은 get으로 변환되고 원소를 쓰는 연산은 set으로 변환된다. data class Point(val x: Int, val y: Int) operator fun Point.get(index: Int): Int{ return when(index){ 0 -> x 1 -> y else -> throw IndexOutOfBoundsException("Invalid coordinate $index") } } fun main() { val p = Point(..
뷰 ( View ) - 허용된 데이터를 제한적으로 보여주기 위해서 하나 이상의 테이블에서부터 유도된 가상 테이블입니다. 장점 1. 논리적 독립성을 제공합니다. 2. 데이터 접근 제어로 보안 가능합니다. - 뷰를 통해 접근하기 때문에 뷰에 나타나지 않는 데이터를 접근할 수 없다.. 3. 사용자의 데이터 관리를 간단하게 합니다. 4. 하나의 테이블로 여러 개의 다른 뷰를 정의할 수 있습니다. 단점 1. 독자적인 인덱스를 가질 수 없습니다. 2. 한 번 정의된 뷰는 변경할 수 없으며, 삭제한 후에 다시 생성해야 합니다. 3. 삽입, 삭제, 갱신 연산에 많은 제약이 따릅니다. 2.1.0 이상 버전의 Room 지속성 라이브러리는 SQLite 데이터베이스 뷰를 지원하므로 쿼리를 클래스로 캡슐화할 수 있습니다. Ro..