본문 바로가기

기록하기

Day + 37


생성자 대신 정적 팩토리 메서드 고려하기

  • 정적 패토리 메서드
    • 장점?
      • 호출될 때마다 인스턴스를 새로 생성하지 않아도 됨
        • 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있음
        • 반복되는 요청에 같은 객체를 반환하는 식으로 정적 팩토리 방식의 클래스는 언제, 어느 인스턴스를 살아 있게 할지 통제 가능
      • 반환 타입의 하위 타입 객체를 반환할 수 있음
        • 반환할 객체의 클래스를 자유롭게 선택할 수 있게 하는 '유연성' 제공
      • 입력 매개변수에 따라 매번 다른 클래스 객체를 반환할 수 있음
        • 반환 타입의 하위 타입이기만 하면, 어떤 클래스의 객체를 반환하든 상관 X
      • 정적 팩토리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 됨
    • 단점?
      • 정적 팩토리 메서드만 제공하면 하위 클래스를 만들 수 없음

  • 정적 팩토리 메서드와 public 생성자는 각자의 쓰임이 있으니 상대적인 장/단점을 이해하고 사용하는 것이 좋음
  • (그래도) 정적 팩토리를 사용하는게 유리한 경우가 더 많으므로, 무작정 public 생성자를 제공하는 습관은 고쳐야함

'기록하기' 카테고리의 다른 글

Day + 39  (1) 2023.11.23
Docker  (0) 2023.11.21
Day + 36  (0) 2023.11.20
Day + 35  (0) 2023.11.19
챌린지 프로젝트 시작  (1) 2023.11.17