정적 팩토리란?

Moondy·2022년 5월 13일
0

정적 팩토리란?

  • static factory method
  • 객체 생성 역할을 하는 클래스 메서드
// LocalTime.class
...
public static LocalTime of(int hour, int minute) {
  ChronoField.HOUR_OF_DAY.checkValidValue((long)hour);
  if (minute == 0) {
    return HOURS[hour];
  } else {
    ChronoField.MINUTE_OF_HOUR.checkValidValue((long)minute);
    return new LocalTime(hour, minute, 0, 0);
  }
}
...

// hour, minutes을 인자로 받아서 9시 30분을 의미하는 LocalTime 객체를 반환한다.
LocalTime openTime = LocalTime.of(9, 30);

장점

  • 이름을 통해 메서드 특징, 파라미터 특징을 표현할 수 있다
  • 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다
    • 인스턴스 미리 만들어놓거나, 새로 생성한 인스턴스를 캐싱하여 재활용 가능
  • 반환타입의 하위타입 객체 반환 가능 → 유연성 향상
  • 객체 생성을 캡슐화할 수 있다
    • 입력 매개변수에 따라 다른 클래스의 객체 반환 가능 (단 반환타입의 하위 타입이어야함)

    • ex) DTO ↔ Entity 간 자유로운 형 변환해주는 메서드

      💡 캡슐화(Encapsulization): 데이터의 은닉. 생성자를 클래스의 메서드 안으로 숨기면서 내부 상태를 외부에 드러낼 필요 없이 객체 생성 인터페이스를 단순화 시킬 수 있다.

  • 메서드 작성 시점에 반환할 객체의 클래스 존재하지 않아도 됨

단점

  • 하위클래스를 만들 수 없다 (상속하려면 public, protected 생성자 필요)
  • 프로그래머에게 인지 잘 안될 수 있다
profile
DevOps를 살짝 찍먹하는 BackEnd 개발자

0개의 댓글