Item 5. Dependency Injection

μžμ›μ„ 직접 λͺ…μ‹œν•˜μ§€ 말고 의쑴 객체 μ£Όμž…μ„ μ‚¬μš©ν•˜λΌ

클래슀λ₯Ό μž‘μ„±ν•˜λ‹€λ³΄λ©΄ λŒ€λΆ€λΆ„μ˜ ν΄λž˜μŠ€κ°€ ν•˜λ‚˜ μ΄μƒμ˜ μžμ›μ— μ˜μ‘΄ν•˜κ²Œ λœλ‹€.

// 1. 정적 μœ ν‹Έλ¦¬ν‹° 클래슀
class SpellChecker {
    private final Lexicon dictionary = new KoreanDictionary();

    private SpellChecker() {
    }

    // ...
}
// 2. μ‹±κΈ€ν„΄
class SpellChecker {
    public static final SpellChecker INSTANCE = new SpellChecker();
    private final Lexicon dictionary = new KoreanDictionary();

    private SpellChecker() {
    }

    // ...
}

μ΄λŸ¬ν•œ 클래슀λ₯Ό 1λ²ˆμ΄λ‚˜ 2번처럼 κ΅¬ν˜„ν•˜κ²Œ 되면 KoreanDictionary ν΄λž˜μŠ€μ— μ˜μ‘΄ν•˜κ²Œ λ˜μ–΄ μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μ—†κ²Œ λœλ‹€.

의쑴 객체 μ£Όμž…

이런 κ²½μš°μ—λŠ” 의쑴 객체 μ£Όμž…μ„ ν•˜λŠ” 것이 μ’‹λ‹€. μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ μƒμ„±μžμ— 의쑴 객체λ₯Ό λ„˜κ²¨μ£ΌλŠ” 방법과 μƒμ„±μžμ— 지원 νŒ©ν„°λ¦¬λ₯Ό λ„˜κ²¨μ£ΌλŠ” 방법이 μžˆλ‹€.

결둠적으둜 ν΄λž˜μŠ€μ—μ„œ ν•˜λ‚˜ μ΄μƒμ˜ μžμ›μ— μ˜μ‘΄ν•˜κ²Œ 되면, 1,2번 방식을 μ‚¬μš©ν•˜λŠ” 것 λ³΄λ‹€λŠ” 3,4 번처럼 의쑴 객체 μ£Όμž…μ„ ν•˜λŠ” 것이 μ’‹λ‹€. 이 방법은 결과적으둜 클래슀의 μœ μ—°μ„±/μž¬μ‚¬μš©μ„±/ν…ŒμŠ€νŠΈ μš©μ΄μ„±μ„ λ†’μ—¬μ£Όκ²Œ λœλ‹€.

Last updated

Was this helpful?