홈 › 중급 › 06 / 9

메서드 활용 패턴 (중급)

섹션 6진행 0 / 9

6. 정리

  • 정적 팩토리(of/from/valueOf/이름 있는 생성)는 생성자의 한계(이름 없음, 매번 새 객체, 구현 노출)를 넘는다. 생성자를 private으로 막으면 만드는 방법을 클래스가 통제한다.
  • 매개변수가 많고 선택적이면 빌더. 필수는 빌더 생성자로, 선택은 return this 체이닝으로, 검증은 build()에서. 메서드 체이닝은 return this가 전부다.
  • 템플릿 메서드는 골격을 final로 고정하고 단계를 abstract/훅으로 비운다. 런타임 디스패치가 부모 코드에서 자식 메서드를 호출하게 한다. 오버라이딩에서 super를 앞에 부르면 "원래 일 + α"가 된다. 인터페이스 default는 추상 메서드 하나로 편의 메서드를 여러 개 제공한다.
  • 반환 설계: 없을 수 있는 값 하나는 Optional, 목록은 빈 컬렉션, 예상된 실패는 Result, 복구 불가는 예외. null은 돌려주지 않는다.
  • 불변 객체는 with-메서드로 바뀐 복사본을 돌려주고, equals/hashCode/toString/compareTo를 계약대로 구현한다. equals(Object) + Objects.hash + Long.compare.
  • 컬렉션은 받을 때 방어적 복사, 돌려줄 때 불변 뷰/복사, 매개변수는 인터페이스 타입으로. 유틸 클래스는 private 생성자 + static.

다음 단계인 고급 06 레슨에서는 메서드 자체를 값으로 다룹니다. 메서드 참조, 고차 함수, 함수 합성, 커링, 전략 주입, 메모이제이션, CompletableFuture 체이닝으로 여기서 배운 패턴들을 상속 없이 람다로 다시 만듭니다.