🧨목차

🎯 모든 예제 소스는에서 확인할 수 있습니다.

🎈배워 볼 내용

✅ 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 방법

✅ 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법

✅ 제때 파괴됨을 보장하고 파괴 전에 수행해야 할 정리 작업을 관리하는 요령

🔥 ITEM 1. 생성자 대신 정적 팩터리 메서드를 고려하라

클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자다.

하지만 모든 프로그래머가 꼭 알아둬야 할 기법이 하나 더 있다. 바로 그 클래스의 인스턴스를 반환하는 단순한 정적 팩터리 메서드를 제공하는 방법이다.

class ObjectManage {

    companion object {
        private const val DATA = "data"
        private const val EMPTY = ""

        fun valueOf(boolean: Boolean): String =
            if (boolean) {
                DATA
            } else {
                EMPTY
            }
    }

}

다음은 Boolean 객체에 따라 간단한 반환 값을 반환해 주는 정적 팩터리 메서드이다.

클래스는 클라이언트에 public 생성자 대신 정적 팩터리 메서드를 다음과 같이 제공할 수 있다.

이 방식에는 장점과 단점이 모두 존재하는데 먼저 정적 팩터리 메서드가 생성자보다 좋은 장점 다섯 가지를 알아보자.

  1. 이름을 가질 수 있다.
    1. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못하지만 정적 팩터리 메서드는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다.