Hanbit the Developer
Effective Kotlin | 5장. 객체 생성 본문
아이템 33: 생성자 대신 팩토리 함수를 사용하라
장점은 다음과 같다:
- 함수에 네이밍 가능 → 가독성 확보(ex. ArrayList(3): 3이 무슨 의미일까? 의문 → ArrayList.withSize(3))
- 다른 타입 리턴 가능(ex. listOf(): 각자의 플랫폼에서 다른 구현체를 반환할 수 있다.)
- 싱글톤 사용 가능
- 아직 존재하지 않는 객체 리턴 가능 → 빌드 이전에 코드에서 해당 타입을 사용할 수 있다는 뜻
- 가시성 제어
- inline, reified 사용 가능
- 복잡한 객체 생성
- 생성자와 달리 슈퍼클래스나 기본생성자를 호출하지 않아도 됨
팩토리 함수 유형
- companion 팩토리 함수
- 확장 팩토리 함수(fun Tool.Companion.createBigTool(): BigTool): companion 객체를 고칠 수 없을 때
- 톱레벨 팩토리 함수
- 가짜 생성자: fun MutableList(), operator fun invoke 활용(비추천)
- 팩토리 클래스의 메서드: 클래스의 상태를 활용하여 객체를 생성(ex. id를 증가시키면서 Student를 생성하는 StudentFactory)
아이템 34: 기본 생성자에 이름 있는 옵션 아규먼트를 사용하라
점층적 생성자, 빌더 패턴 대신, 이름 있는 옵션 아규먼트를 사용한 기본 생성자와 DSL를 활용하라.
더 짧고 명확하고 사용하기 쉽기 때문이다.
아이템 35: 복잡한 객체를 생성하기 위한 DSL을 정의하라
다음과 같은 것을 표현하는 경우에 유용하다:
- 복잡한 자료구조
- 계층적인 구조
- 거대한 양의 데이터
다만, 익숙하지 않은 경우 혼란과 어려움을 야기하므로 상황에 맞게 사용해야 한다.
'Kotlin' 카테고리의 다른 글
Effective Kotlin | 7장. 비용 줄이기 (0) | 2023.09.11 |
---|---|
Effective Kotlin | 6장. 클래스 설계 (0) | 2023.08.12 |
Effective Kotlin | 4장. 추상화 설계 (0) | 2023.06.18 |
Effective Kotlin | 3장. 재사용성 (0) | 2023.06.13 |
Effective Kotlin | 2장. 가독성 (0) | 2023.06.13 |