κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ€κ³ μμΉ
- κ°μ²΄λ
λ¨ νλμ μ± μλ§ κ°μ ΈμΌ νλ€. - μ± μμ΄λ? ν΄μΌνλ κ², ν μ μλ κ², ν΄μΌνλ κ²,..
- μ±
μ λΆλ¦¬ : ν ν΄λμ€μ λ¨ νλμ μ±
μλ§ μννλλ‘ ν΄
Immutable Classλ₯Ό μ§ν₯νλ€.- μ±
μμ΄ λ§μ μλ‘ ν΄λμ€ λ΄λΆμ μλ‘ λ€λ₯Έ μν μ μννλ μ½λλΌλ¦¬
κ°κ²°ν©ν κ°λ₯μ±μ΄ λλ€.
- μ±
μμ΄ λ§μ μλ‘ ν΄λμ€ λ΄λΆμ μλ‘ λ€λ₯Έ μν μ μννλ μ½λλΌλ¦¬
νμ₯μ λν΄μλκ°λ°©(open)μ μ΄λ©°λ³κ²½μ λν΄μλνμ(Close)λμ΄μΌ νλ€.- μ¦ κΈ°μ‘΄μ μ½λλ₯Ό λ³κ²½νμ§ μμΌλ©° κΈ°λ₯μ μΆκ°ν μ μλλ‘ μ€κ³κ° λμ΄μΌ νλ€.
- ν΄λΉ μμΉμ μ μ©νκΈ° μν΄ μ μ©νλ λ°©λ²μ
μμ(is-a)κ³Όμ»΄ν¬μ§μ (has-a)μ΄ μμ§λ§ μ»΄ν¬μ§μ μ μΆμ²νλ€. - μμμ μμ ν΄λμ€κ° λ³νλ©΄ νμ ν΄λμ€μ λΌμΉλ μν₯μ΄ ν¬κΈ° λλ¬Έμ΄λ€.
- μμ ν΄λμ€λ μ΅μν μμ μ
λΆλͺ¨ ν΄λμ€μμ κ°λ₯ν νμλ₯Ό μνν μ μμ΄μΌ νλ€. - LSPλ₯Ό λ§μ‘±νλ€λ©΄ λΆλͺ¨ ν΄λμ€μ μΈμ€ν΄μ€ λμ μμ ν΄λμ€μ μΈμ€ν΄μ€λ‘ λ체ν΄λ νλ‘κ·Έλ¨μ μλ―Έκ° λ³νμ§ μλλ€.(ex-
List<Integer> l = new ArrayList<>();) - LSPλ₯Ό λ§μ‘±μν€λ λ°©λ² μ€ νλλ λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό
Overrideνμ§ μλ κ²μ΄λ€.
μΈν°νμ΄μ€λ₯Ό ν΄λΌμ΄μΈνΈμ νΉνλλλ‘λΆλ¦¬μν€λ μ€κ³ μμΉ- ν΄λΌμ΄μΈνΈλ μμ μ΄ μ΄μ©νμ§ μλ κΈ°λ₯μλ μν₯μ λ°μ§ μμμΌ νλ€.
- λ¨μΌ μ± μ μμΉκ³Ό λ°μ ν κ΄κ³κ° μλ€.
- μμ‘΄ κ΄κ³λ₯Ό λ§Ίμ λ λ³ννκΈ° μ¬μ΄ κ² λλ μμ£Ό λ³ννκΈ° 보λ€λ λ³ννκΈ° μ΄λ €μ΄ κ², κ±°μ λ³νκ° μλ κ²μ μμ‘΄νλΌλ κ².
- ν΄λμ€κ° μμ‘΄ κ΄κ³λ ? ν ν΄λμ€κ° μ΄λ€ κΈ°λ₯μ μννλ €κ³ ν λ
λ€λ₯Έ ν΄λμ€μ μλΉμ€κ°νμν κ²½μ°- ex) A ν΄λμ€ λ΄λΆμ
newμ°μ°μλ‘ B ν΄λμ€κ° μμ±λμ΄ μλ κ²½μ°.
- ex) A ν΄λμ€ λ΄λΆμ
- DIP λ§μ‘±μν€λ λ°©λ² : μ΄λ€ ν΄λμ€κ° μμ‘΄ κ΄κ³λ₯Ό λ§Ίμ λ ꡬ체μ μΈ ν΄λμ€λ³΄λ€λ
μΈν°νμ΄μ€λμΆμ ν΄λμ€μμμ‘΄ κ΄κ³λ₯Ό λ§Ίλλ‘ νλ€. - DIPλ₯Ό λ§μ‘±νλ μ€κ³λ
DIκΈ°μ λ‘ λ³νλ₯Ό μ½κ² μμ©νλ μ½λλ₯Ό μμ±ν μ μκ² λλ€.