companion object를 언제 사용하면 좋을까? 🤔

·2023년 9월 7일

companion object

클래스가 메모리에 적재되면서 함께 생성되는 동반 객체이다.
클래스 내에 하나만 생성할 수 있다.
클래스 내에 정적 멤버들을 그룹화한다.


주로 언제 사용하는 게 좋을까? 🤔

1. 객체 생성을 커스터마이징 할 때

  • 팩토리 패턴 : 메서드를 통해 객체를 생성하는 것 (객체를 만들어내는 공장 패턴)
companion object {
	fun createBy(cart: Cart): CartCreatedKafkaModel {
    	return CartCreatedKafkaModel(
        	mallNo = cart.mallNo,
            memberNo = cart.memberNo,
            mallProductNo = cart.mallProductNo,
       )
    }
}
  • 동반 객체 안에 생성자를 호출하는 팩토리 메서드 정의
class MyClass(private val value: Int) {
    companion object {
        fun createDefault() = MyClass(0)
        fun createWithValue(value: Int) = MyClass(value)
    }
}

2. 확장 함수와 함께 사용

  • 해당 클래스의 기능을 확장할 수 있다.
class MyClass {
    companion object {
        fun myStaticFunction() {
            // 정적 메서드의 내용
        }
    }
}

fun MyClass.Companion.anotherStaticFunction() {
    // 다른 정적 메서드의 내용
}

companion object 개념을 잘 모르고 작성한 내 코드.. 🤕

  • response 메소드없이 그냥 생성자로 객체를 만들자
  • 동반 객체는 Model을 만들기 위해 Request 객체를 입력받는 경우 사용하는 게 좋음
companion object {
	fun ok(
    	shippingNo: Long,
        result: Boolean
   ) : UpdateResponse {
   	return UpdateResponse(
    	shippingNo = shippingNo,
        result = result,
    )
  }
}

⭐️ 팀원분의 피드백!! ⭐️

profile
코틀린 & 스프링 개발자

0개의 댓글