[λμμΈ ν¨ν΄]Observer Pattern
μ·κ°κ²μμ μΌν λ μμλ μΌμ΄λ€. μ°λ¦¬λ 무μμμ μΌλ‘ ν μΈ νμ¬λ₯Ό μ΄μλλ° νμ΄λ°μ λμΉ μλλ€μ΄ νκ²°κ°μ΄ ν¬λκ±°λ¦¬κ³ λ νλ€. ν μΈ ν λ λ¬Έμ μ’ μ£Όλ©΄ μ’κ² λ€κ³ . λ§€λ² λ©°μΉ μ κΉμ§ ν μΈ νλ€λ κ±Έ μκ³ λλ©΄ μμνλ€κ³ . μ΅μ λ² ν¨ν΄μ μ΄λ¬ν μλλ€μ μν λ¬Έμ λ°μ‘κ³Ό κ°λ€.
“κ΄μ°°μ”λΌλ λ¨μ΄λ₯Ό 보면 ν΄λΉ μ΄λ¦νλ₯Ό λ¬κ³ μλ κ°μ²΄λ μ΄λ ν μν μ μνν κ² κ°μκ°? λκ΅°κ°λ₯Ό λ©΄λ°ν μ§μΌλ³΄λ μν μ μλκΉ? μ΅μ λ² ν¨ν΄μμλ μ΄ μ΅μ λ²μ μλ―Έκ° μ‘°κΈ λ€λ₯΄λ€. λ¨μν μ§μΌλ³Έλ€, 보λ€λ `μ°λ½μ κΈ°λ€λ¦°λ€`λΌλ κ²μ΄ λ μ³μ ννμΌ κ²μ΄λ€.
λ§μΉ μ·κ°κ² ν μΈ νμ¬ λ¬Έμλ₯Ό κΈ°λ€λ¦¬λ μλκ³Ό κ°λ€. μ·κ°κ²λ₯Ό μ£Όμνκ³ , κ΄μ°°νμ§λ§ κ²°κ΅ μ·κ°κ²μμ λ¬Έμλ₯Ό 보λ΄μ£Όμ΄μΌ μλμ νλμ κ²°μ ν μ μλ€. μ·κ°κ²λ₯Ό λ€λ¦΄μ§, λ€λ¦¬μ§ μμμ§ κ·Έλ¦¬κ³ μ·μ μ΄μ§, μ¬μ§ μμ μ§. κ·Έλ¦¬κ³ μ·λ€μ λλ¬λ³΄λ€κ° λλ€μ κ²°μ μ λ΄λ¦΄ κ²μ΄λ€. μ¬μ ν μ΄ μ·κ°κ²μ μλ¦Ό λ¬Έμλ₯Ό λ°μμ§, λ°μ§ μμμ§. μ΄λ¬ν κ³Όμ μ ν¨ν΄ν ν κ²μ μ΅μ λ² ν¨ν΄μ΄λΌκ³ νλ€.
μλμ 보λ΄λ μ·κ°κ²λ₯Ό Subject, μλλ€μ ObserverλΌκ³ νλ€.
μ΄λ¬ν μ΅μ λ² ν¨ν΄μ μ¬μ©νλ©΄ μλλ€λ λ³ΈμΈλ€μ μ±
μμ λ€ ν μκ°μ μ ννκ² μ μ μκΈ°μ λΆνμν μ‘°νκ° νμμΉ μλ€. λν κ°κ²λ₯Ό λ―μ΄ κ³ μΉ νμ μμ΄ μλ‘μ΄ μλμ λ²νΈλ§ μΆκ°νλ©΄ λκΈ° λλ¬Έμ SOLID λ²μΉμμ νμ₯μλ μ΄λ € μκ³ λ³κ²½μλ λ«ν μλ Open-Close Principle κ°λ°© νμ λ²μΉμ μ μ§ν¬ μ μλ€. κ²λ€κ° μΈμ λ μ§ μ·κ°κ²μμ κ΄κ³λ₯Ό μλμ΄ λμ μ μκΈ°μ 무쑰건μ μΈ κ΄κ³κ° μλλΌλ μ₯μ μ΄ μλ€. μ΄λ μλμ μΈμ λ μ§ μ΄λ¬ν κ΄κ³λ₯Ό λμ μ μλλ° μ΄λ μλκ³Ό μ·κ°κ²λ ν μΈ νμ¬μ λν μλ¦Όμ μ£Όκ³ λ°κ±°λ, μ£Όκ³ λ°μ§ μλ κ΄κ³λΌλ μ μ κ° μΆ μμ μ‘΄μ¬νκΈ° λλ¬Έμ΄λ€. μ¦, μ±μ΄ μ€νλλ λ°νμμλ μ΄λ¬ν κ΄κ³κ° 미리 μ ν΄μ Έ μκΈ°μ μ΄μ λν μ
λ°μ΄νΈκ° κ°λ₯νλ€.
λ€λ§ μλλ€μ΄ μλ¦Ό λ¬Έμλ₯Ό λ°λ νμ΄λ°μ 무μμμ μ΄κΈ°μ λ§μλλ‘ μ ν μ μλ€. λν μλμ΄ λ μ΄μ μ΄ μ·κ°κ²λ₯Ό μ€μ§ μκΈ°λ‘ λ§μ λ¨Ήμμ§λ§ λ²νΈ μμ νλ κ²μ μμλ€λ©΄, λΆνμν λ¬Έμλ₯Ό λ°κ² λμ΄ μ·κ°κ²λ μλ λͺ¨λ μλ‘μ μμμ λλΉνλ κ²°κ³Όλ₯Ό λ³μ μ μλ€. νλ‘κ·Έλ¨ μμΌλ‘λ λ©λͺ¨λ¦¬ λμκ° μκΈ°κ² λλ κ²μ΄λ€. κ²λ€κ° μ΄ ν¨ν΄μ μμ£Ό μ¬μ©νλ€λ©΄ ꡬ쑰μ λμμ΄ μ μ 볡μ‘ν΄μ§κ³ μμλ³΄κΈ°κ° νλ€μ΄μ§λ€.
λλ¬Έμ μ΄λ¬ν μ₯λ¨μ μ κ³ λ €ν΄ μ μ ν μ¬μ©μ΄ νμνλ€.