// Util이지만 생성자가 없음
public class ImageUtility {
    private static String IMAGE_DATE_FORMAT = "yyyyMMddHHmm";

    public static String makeImageFileNm(String imgFileNm) {
        return imgFileNm + "_" + new SimpleDateFormat(IMAGE_DATE_FORMAT).format(new Date());
    }
}

Private 생성자를 추가하여 클래스의 인스턴스화를 방지

public class ImageUtility {
    // 기본 생성자가 만들어지는 것을 방어(인스턴스화 방지용)
    private ImageUtility(){
        throw new AssertionError();
    }
}

Java 의 예시

  1. java.util.Arrays
    1. 인스턴스화를 하지 않기 위해 private 생성자를 선언했고, 배열 관련 메서드들을 모아 두었슴
  2. java.lang.Math
    1. 마찬가지로 private 생성자를 추가했고, Math 에 대한 기본 타입(PI,E)이나 관련 메서드들을 모아두었음
  3. java.util.Collection
    1. 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(팩터리)를 모아놓았음