object 선언
object CartItems {
private val mutableProducts = mutableListOf<Product>()
val products: List<Product> = mutableProducts
fun addProduct(product: Product){
mutableProducts.add(product)
}
}
싱글턴 패턴
- 전체에서 단일 객체로 유지하는 기법
- 인스턴스를 하나만 만들어 사용
object exrpessions - 무명 객체
1. 무명 객체 생성
- 이름을 생략하고 객체의 프로퍼티와 함수를 정의
- 단일 객체로 생성되는 것과 다르게 매번 새로운 객체를 생성
val cartItems object {
val products = mutableListOf(Product("전자기기","핸드폰"))
override fun toString() = products.toString()
}
print(cartItems) // [Product(categoryLabel=전자기기,name=핸드폰)]
2. 클래스/인터페이스 상속
interface ClickListener {
fun onClick(view: View)
}
val clickListener = object: ClickListener{
override fun onClick(view: View){
TODO("Not yet implemented")
}
}
companion object
- constructor를 private로 변경해 외부에서 생성자로 인스턴스를 생성하는 것을 방지
- companion object에서 생성자를 제공하는 경우 사용
class Store private constructor(private val products: List<Product>){
companion object{
fun create(storeId: String): Store{
return Stroe(fetchProducts((storeId))
}
}
private fun fetchProducts(storeId: String): List<String>{
// TODO 데이터 요청
return listOf()
}
fun showProducts(){...}
}
val store = Store.create("electronics")
store.showProducts()
외부에서 Store를 생성할 때는 companion object의 create()를 호출하여 생성
Compile time constant
1. const modifier
- compile time에 값을 알 수 있는 read-only 프로퍼티
2. 제약조건
- top-level 프로퍼티
- object 프로퍼티
- companion object 프로퍼티
+ custom getter 없음
const val KEY_PRODUCT_ID = "product_id"
const val KEY_PRODUCT_ID: String
get()="product_id" // Error - getter 생성 불가능
728x90
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] 고차 함수, 람다, Scope functions (0) | 2022.09.18 |
---|---|
[Kotiln] Nested & inner class, Extension함수, Generics (0) | 2022.09.16 |
[Kotlin] List, Set, Map, Collection Operations (0) | 2022.09.16 |
[Kotlin] Package, 가시성 변경자(public,private,internal,protected) (0) | 2022.09.11 |
[Kotlin] 클래스 toString/equals/hashCode, data class (0) | 2022.09.10 |