ITEM 4: Private Constructor

// 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());
    }
}

μƒμ„±μžλ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ§€ μ•ŠλŠ” public μƒμ„±μžλ₯Ό λ§Œλ“ λ‹€. μ΄λ•Œ μ‚¬μš©μžλŠ” 이 μƒμ„±μžκ°€ μžλ™μœΌλ‘œ μƒμ„±λœ 것인지 ꡬ뢄할 수 μ—†μœΌλ©°,

// λ‹€μŒκ³Ό 같이 μ‚¬μš©ν•˜κΈ°λ₯Ό λ°”λž¬μœΌλ‚˜,
ImageUtility.makeImageFileNm("test", ".png");

// μƒμ„±μžλ₯Ό μƒμ„±ν•΄μ„œ μ‚¬μš©ν•  μˆ˜λ„ 있음
ImageUtility imageUtility = new ImageUtility();
String imageFileNm = imageUtility.makeImageFileNm("test", ".png");

이처럼 μ˜λ„μΉ˜ μ•Šκ²Œ μΈμŠ€ν„΄μŠ€ν™”ν•  수 있게된 ν΄λž˜μŠ€λ“€λ„ λ°œμƒν•œλ‹€.

// Utilμ΄μ§€λ§Œ μƒμ„±μžκ°€ μ—†μŒ
abstract 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 μƒμ„±μžλ₯Ό μΆ”κ°€ν•˜λ©΄ 클래슀의 μΈμŠ€ν„΄μŠ€ν™”λ₯Ό 막을 수 μžˆλ‹€.

private μƒμ„±μžμ΄λ―€λ‘œ 클래슀 μ™ΈλΆ€μ—μ„œλŠ” μ ‘κ·Όν•  수 μ—†μœΌλ©°, λ‚΄λΆ€μ—μ„œ μ‹€μˆ˜λ‘œ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” κ²½μš°μ— λŒ€μ‘ν•˜κΈ° μœ„ν•΄ AssrtionError μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό ν–ˆλ‹€. ν•˜μ§€λ§Œ, μƒμ„±μžκ°€ μžˆλŠ”λ° ν˜ΈμΆœν•  수 μ—†λŠ” 것은 직관적이지 μ•ŠμœΌλ―€λ‘œ, μ μ ˆν•œ 주석을 λ‹€λŠ” 것을 ꢌμž₯ν•œλ‹€.

λ˜ν•œ, private μƒμ„±μžλŠ” 상속도 λΆˆκ°€λŠ₯ν•˜λ‹€. λͺ¨λ“  μƒμ„±μžλŠ” μƒμœ„ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜κ²Œ λ˜λŠ”λ°, 이λ₯Ό private μ„ μ–ΈμœΌλ‘œ ν•˜μœ„ν΄λž˜μŠ€κ°€ μƒμœ„ 클래슀의 μƒμ„±μžμ— 접근을 λͺ»ν•΄ 상속이 λΆˆκ°€λŠ₯ν•˜λ‹€.

μ‚¬μš©λ˜λŠ” Utility

java.util.Arrays

μΈμŠ€ν„΄μŠ€ν™”λ₯Ό ν•˜μ§€ μ•ŠκΈ° μœ„ν•΄ private μƒμ„±μžλ₯Ό μ„ μ–Έν•œ 것을 λ³Ό 수 있으며, λ°°μ—΄ κ΄€λ ¨ λ©”μ„œλ“œλ“€μ„ λͺ¨μ•„ λ†“λ‘μ—ˆλ‹€.

java.lang.Math

Math에 λŒ€ν•œ κΈ°λ³Έ νƒ€μž…(PI, E)μ΄λ‚˜ κ΄€λ ¨ λ©”μ„œλ“œλ“€μ„ λͺ¨μ•„λ‘μ—ˆλ‹€.

java.util.Collection

νŠΉμ • μΈν„°νŽ˜μ΄μŠ€λ₯΄ κ΅¬ν˜„ν•˜λŠ” 객체λ₯Ό μƒμ„±ν•΄μ£ΌλŠ” 정적 λ©”μ„œλ“œ(νŒ©ν„°λ¦¬)λ₯Ό λͺ¨μ•„놓을 수 μžˆλ‹€. (java8λΆ€ν„° 이런 λ©”μ„œλ“œλ₯Ό μΈν„°νŽ˜μ΄μŠ€μ— 넣을 수 있음)

final ν΄λž˜μŠ€μ™€ κ΄€λ ¨ λ©”μ„œλ“œ

final classλ₯Ό μƒμ†ν•΄μ„œ ν•˜μœ„ ν΄λž˜μŠ€μ— λ©”μ„œλ“œλ₯Ό λ„£λŠ” 것은 λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ, final ν΄λž˜μŠ€μ™€ κ΄€λ ¨ λ©”μ„œλ“œλ“€μ„ λͺ¨μ•„λ†“μ„λ•Œλ„ μ‚¬μš©ν•œλ‹€.

Last updated

Was this helpful?