λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Note for moment

[OOP] 싱글톀 클래슀(Singleton)

by πŸ’œautumn 2020. 9. 3.

* 싱글톀(Singleton) 클래슀

    : μΈμŠ€ν„΄μŠ€λ₯Ό λ”± ν•˜λ‚˜λ§Œ λ§Œλ“€μ–΄μ„œ 제곡 > λ”°λΌμ„œ μƒμ„±μž 은닉 ν•„μˆ˜! (private)

    : 정적 블둝을 톡해 생성 > 정적블둝은 ν΄λž˜μŠ€κ°€ λ‘œλ”©λœ ν›„ λ”± ν•œλ²ˆλ§Œ 싀행됨

    : 싱글톀 ν΄λž˜μŠ€μž„μ„ ν‘œκΈ°ν•˜κΈ°μœ„ν•΄ μ‹œμŠ€ν…œ ν•„λ“œλͺ… μ•žμ— κΌ­ _기호λ₯Ό 뢙인닀. 

public class Singleton {
	// μ‹œμŠ€ν…œ ν•„λ“œλ₯Ό μ„ μ–Έ : private static μ‚¬μš©
    //  => μ΄λ•Œ λ³€μˆ˜λͺ… μ•žμ— _기호 ν‘œκΈ°
	private static Singleton _instance;
    
    // 정적블둝 : ν΄λž˜μŠ€κ°€ λ‘œλ”©λ˜λ©΄ λ”± ν•œλ²ˆλ§Œ μ‹€ν–‰λ˜λŠ” μ˜μ—­
    //  => μ—¬κΈ°μ„œ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ—¬ μ‹œμŠ€ν…œν•„λ“œμ— μ €μž₯
    static {
    	_instance = new Singleton();
    }
    
    // μƒμ„±μž 은닉화
    private Singleton() {
    }
    
    // μ‹œμŠ€ν…œ ν•„λ“œμ— μ €μž₯된 μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜λŠ” λ©”μ†Œλ“œ >> μ—­μ‹œ μ •μ ν•„λ“œλ₯Ό λ°›κΈ°μœ„ν•¨μœΌλ‘œ μ •μ λ©”μ†Œλ“œλ‘œ μ„ μ–Έ
    // => 은닉화 μ‹œμΌ°κΈ° λ•Œλ¬Έμ— λ°˜λ“œμ‹œ μ„ μ–Έν•΄μ•Ό ν™œμš©ν•  수 μžˆλ‹€.
    public static Singleton getInstance() {
    	return _instance;
    }
}

λŒ“κΈ€