2021-03-22(Mon)
νλͺ©
λ΄μ©
νμ΅ λ μ§
2021-03-22(μ)
νμ΅ μκ°
11:00~23:00
νμ΅ λ²μ λ° μ£Όμ
λμμΈν¨ν΄
νμ΅ λͺ©ν
λμμΈν¨ν΄ μ€ μ±κΈν€ ν¨ν΄μ λν΄ νμ΅νλ€.
λλ£ νμ΅ λ°©λ²
-
μμΈ νμ΅ λ΄μ©
νΉμ κ°μ²΄λ₯Ό μ¬μ©νλ€λ κ²μ νΉμ κ°μ²΄μ κΈ°λ₯μ μμ‘΄νλ€λ μλ―Έμ΄λ€.
μ΄ νΉμ κ°μ²΄λ₯Ό μ¬μ©νλ λ°©λ²μ λ°λΌ κ°ν κ²°ν©κ³Ό μ½ν κ²°ν©μ΄ μλ€. κ²°ν©μ΄ μ½ν μλ‘ λ€λ₯Έ κ°μ²΄μ λ³νμ μν₯μ λ λ°λλ€.
κ°ν κ²°ν©: λ©μλ λ΄μμ μμ‘΄νλ κ°μ²΄λ₯Ό μ§μ μμ±νλ€.
μ½ν κ²°ν©: μμ‘΄νλ κ°μ²΄κ° μμ±λ κ²μ λ©μλ μΈμλ‘ μ λ¬λ°λλ€.
μ±κΈν΄ ν¨ν΄(Singleton pattern)
μ ν리μΌμ΄μ μ΄ μμλ λ μ΄λ€ ν΄λμ€κ° μ΅μ΄ νλ²λ§ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ , κ·Έ λ©λͺ¨λ¦¬μ μΈμ€ν΄μ€λ₯Ό λ§λ€μ΄ μ¬μ©νλ λμμΈ ν¨ν΄.
κ°μ²΄κ° λ무 λ§μμ§λ©΄ μ»΄ν¨ν° μμμ κ³Όλνκ² μ¬μ©νκ² λκ³ , μ΄λ νλ‘κ·Έλ¨ μ 체μ μλλ₯Ό λλ¦¬κ² ν μ μλ€.
-> κ°λ°μλ κ°μ²΄μ μ΅λ κ°μλ₯Ό μ νν νμκ° μκΈ΄λ€.
μ±κΈν΄ ν¨ν΄μ μ΅λ Nκ°λ‘ κ°μ²΄ μμ±μ μ ννλ ν¨ν΄μ΄λ€. μ΄ λ μ€μν κ²μ μμ±λλ κ°μ²΄μ μ΅λ κ°μλ₯Ό μ ννλ λ° μμ΄μ κ°μ²΄μ μμ±μ μμ²νλ μͺ½μμλ μΌμΌμ΄ μ κ²½μ°μ§ μμλ λλλ‘ λ§λ€μ΄μ£Όλ κ²μ΄λ€.
μ±κΈν΄ μ₯μ
λ©λͺ¨λ¦¬ λλΉλ₯Ό λ°©μ§νλ€. κ³ μ λ λ©λͺ¨λ¦¬ μμμ μ»μΌλ©΄μ νλ²μ newλ‘ μΈμ€ν΄μ€λ₯Ό μ¬μ©νκΈ° λλ¬Έ.
λ€λ₯Έ ν΄λμ€μ μΈμ€ν΄μ€λ€μ΄ λ°μ΄ν°λ₯Ό 곡μ νκΈ° μ½λ€.
μ±κΈν΄μΌλ‘ λ§λ€μ΄μ§ ν΄λμ€μ μΈμ€ν΄μ€λ μ μ μΈμ€ν΄μ€μ΄κΈ° λλ¬Έ.
λ λ²μ§Έ νΈμΆλΆν°λ κ°μ²΄ λ‘λ©μκ°μ΄ νμ νκ² μ€μ΄ μ±λ₯μ΄ μ’μμ§λ€.
μ±κΈν΄ λ¨μ
κ°μ²΄ μ§ν₯ μ€κ³ μμΉμ μ΄κΈλλ©° μμ κ³Ό ν μ€νΈκ° μ΄λ €μμ§λ€.
μ±κΈν΄ μΈμ€ν΄μ€κ° λ무 λ§μ μΌμ νκ±°λ λ§μ λ°μ΄ν°λ₯Ό 곡μ μν¬ κ²½μ° λ€λ₯Έ ν΄λμ€μ μΈμ€ν΄μ€λ€ κ°μ κ²°ν©λκ° λμμ Έ 'κ°λ°©-νμ μμΉ'μ μλ°°νκ² λλ€.
λ©ν°μ°λ λ νκ²½μμ λκΈ°νμ²λ¦¬λ₯Ό μ μ νκ² ν΄μ£Όμ§ μμΌλ©΄ μΈμ€ν΄μ€κ° λ κ° μ΄μ μμ±λ μ μλ€.
μ±κΈν΄ ν¨ν΄ νμ©λ μν© λ° μμ
μλ° νλ‘κ·Έλλ°
λ°μ΄ν°λ² μ΄μ€ 컀λ₯μ ν
λ‘κ·Έ λΌμ΄ν°
κ²μ νλ‘κ·Έλλ°
μ¬μ΄λ λ§€λμ
μ€μ½μ΄ λ§€λμ
μ±κΈν΄ ꡬν
μ νΈλ¦¬ν° λ©μλλ‘ μ±κΈν΄μ ꡬννμ. μ΄ λ μ νΈλ¦¬ν° λ©μλ μΈμ μμ±μλ₯Ό μ§μ νΈμΆν΄μ κ°μ²΄λ₯Ό μμ±νλ κ²μ λ§κΈ° μν΄μλ μμ±μλ₯Ό privateλ‘ μ€μ νλ©΄ λλ€.
λ¬Έμ λ μμ²λΌ ꡬνν κ²½μ°, λ©ν°μ°λ λ νκ²½μμλ κ°μ²΄λ₯Ό νλλ§ μμ±νλ€λ κ²μ 보μ₯ν μ μλ€. μ°λ λκ° singleton κ°μ²΄κ° nullμΈμ§ νμΈνλ κ³Όμ μ΄ κ±°μ λμμ μ΄λ€μ§ μ μκΈ° λλ¬Έμ΄λ€. μ΄ μ·¨μ½μ μ μ΄λ»κ² ν΄κ²°ν κΉ?
μμ²λΌ synchronizedλ₯Ό μμ½μ΄λ‘ λ£μ΄μ£Όλ©΄ ν΄κ²°λλ€.
νμ§λ§ μ΄κ±΄ μ‘°κΈλ§ μκ°ν΄λ³΄λ©΄ λΉμ©μ΄ λ무 λΉν¨μ¨μ μΈ μ μ μ μ μλ€.
μ΅μ΄μ singletonμ΄ nullμΈ κ²½μ°μλ§ λ€λ₯Έ μ°λ λμμ κ²½ν©μ λ§μΌλ©΄ μΆ©λΆνλ°,
synchronizedλ₯Ό μμ½μ΄λ₯Ό λ£μΌλ©΄ λͺ¨λ μ°λ λλ₯Ό κΈ°λ€λ¦¬κ²νμ¬ λ³λͺ©νμμ΄ μΌμ΄λλ€.
λ°λΌμ μλμ²λΌ ν΄λμ€ λ΄λΆμμ μ΅μ΄μ κ°μ²΄ μΈμ€ν΄μ€λ₯Ό λ§λ€λλ‘ ν΄μ κ°μ ν μ μλ€.
μλμ²λΌ lazy holderμ μν΄ μ΄κΈ°νλ₯Ό μν¬ μλ μλ€.
μ΄ λ°©λ²μ JVMμ ν΄λμ€ μ΄κΈ°ν κ³Όμ μμ 보μ₯λλ μμμ νΉμ±μ μ΄μ©νμ¬ μ±κΈν΄μ μ΄κΈ°ν λ¬Έμ μ λν μ± μμ JVMμ λ λκΈ΄λ€.
holder μμ μ μΈλ instanceκ° staticμ΄κΈ° λλ¬Έμ ν΄λμ€ λ‘λ©μμ μ νλ²λ§ νΈμΆλ κ²μ΄λ©°, finalμ μ¬μ©ν΄ λ€μ κ°μ΄ ν λΉλμ§ μλλ‘ λ§λ λ°©λ²μ΄λ€.
νμ΅ λ΄μ©μ λν κ°μΈμ μΈ μ΄ν
μΌμ μ ꡬ맀ν΄λλ λμμΈν¨ν΄ κ°μλ₯Ό μκ°νμλ€. νλ‘μ νΈλ₯Ό μ§νν΄λ³΄λ©΄ λ΄κ° μ°κ³ μλ κ²μ΄ μ§κΈ μν©μμ λ² μ€νΈ νλν°μ€μΈμ§μ λν΄ λμμμ΄ κ³ λ―Όνκ² λλ€. μ§κΈμ μλͺ»λ νλ¨μ΄ μ΄νμ κΈ°μ λΆμ±λ‘ μμ©ν μ μκΈ° λλ¬Έμ! λμμΈ ν¨ν΄μ μ μμ§ν΄μ μ€μ νλ‘μ νΈμ μ§ννλ©΄ μμ°μ±λ μ¬λΌκ°κ±°λΌ κΈ°λν΄λ³Έλ€.
λ€μ νμ΅ κ³ν
TDD νμ΅
Last updated
Was this helpful?