Item 4. Enforce Noninstantiability with a Private Constructor
인스턴스화를 막으려거든 private 생성자를 사용해라
인스턴스화를 막아야 하는 이유
유틸리티 클래스의 경우
public class MathUtils {
// private 생성자
private MathUtils() {
throw new AssertionError(); // 인스턴스화 방지
}
public static int add(int a, int b) {
return a + b;
}
public static int subtract(int a, int b) {
return a - b;
}
}상속을 방지하기 위해
설계 명확성
인스턴스화를 막는 방법: private 생성자
싱글톤 패턴과의 차이점
실세계 예제: Lombok과 자바 스프링부트를 이용한 유틸리티 클래스
Lombok 사용 예제
Spring Boot 서비스 클래스와 결합
Lombok을 사용하지 않는 유틸리티 클래스
Lombok의 추가 기능: @UtilityClass의 이점
스프링부트와 유틸리티 클래스의 통합
예제: 데이터 변환 유틸리티 클래스
결론
PreviousItem 3. Ensure Singleton with Private Constructor or Enum TypeNextItem 5. Prefer Dependency Injection to Hardwiring Resources
Last updated