OCP, DIP
κ°μ²΄μ§ν₯ μ€κ³ 5λ μμΉ(SOLID) μ€ OCPμ DIPμ λν΄ μμ보μ.
OCP(Open Closed Principle) : κ°λ°© νμ μμΉ
OCP -> κ°λ°© νμ μμΉμ ν λ§λλ‘ μ μνλ©΄ νμ₯μλ κ°λ°©λμ΄ μμ΄μΌ νκ³ λ³κ²½μλ νμλμ΄ μμ΄μΌ νλ€.
λΌλ μμΉμ΄λ€.
λͺ¨μμ μΌλ‘ λ€λ¦¬λ λ§μ΄μ§λ§ μ°¨κ·Όμ°¨κ·Ό μμ보μ.
νΈλν°μ μ¬μ©μκ° μκ³ , μ¬μ©μλ μμ΄ν°μ μμ‘΄νλ€κ³ μκ°ν΄λ³΄μ.
κ·Έλ¬λ©΄ μ¬μ©μμ μμ΄ν°μ μμ‘΄ κ΄κ³λ λ€μκ³Ό κ°μ΄ λλ€.
μμ κ°μ μν©μμ μ¬μ©μμ νΈλν°μ΄ μλλ‘μ΄λν°μΌλ‘ λ°λλ€κ³ ν΄λ³΄μ
κ·Έλ¬λ©΄ μ¬μ©μλ μμ΄ν°μμ μλλ‘μ΄λν°μ λν μ¬μ©λ²μ λ€μ λ°°μμΌ νλ€.
μ μ΄μ μ¬μ©μμκ² μμ΄ν°κ³Ό μλλ‘μ΄λν°μ λν 곡ν΅μ κ°μ΄λλΌμΈμ΄ μ£Όμ΄μ§κ³ , μμ΄ν°κ³Ό μλλ‘μ΄λν°μ΄ κ·Έ κ°μ΄λμ λ§κ² μ μλλ©΄ μ΄λ»κ² λ κΉ?
μ¬μ©μκ° μμ΄ν°μμ λ€λ₯Έ κΈ°μ’
μΌλ‘ λ°κΏλ μ¬μ©λ²μ λ€μ μ΅ν νμλ μλ€.
λν, μμ΄ν°κ³Ό μλλ‘μ΄λν°μ΄ μλ λ€λ₯Έ νμ¬μ ν°λ κ°μ΄λλΌμΈμ λ§κ² μ μλλ€λ©΄ μ¬μ©μλ μ¬μ©λ²μ λ€μ λ°°μ°μ§ μμλ μμ°μ€λ½κ² μ¬μ©ν μ μλ€.
κ°μ²΄μ§ν₯λ μ΄μ κ°λ€.
λ³κ²½ κ°λ₯μ±μ΄ μλ κ°μ²΄λ₯Ό ν΄λΌμ΄μΈνΈ μ
μ₯μμ ꡬνμ²΄κ° μμ‘΄νλ κ² νλ λ°©μ보λ€λ, μΈν°νμ΄μ€λ₯Ό λ§λ€μ΄μ μμ‘΄νκ² νκ³ , κ·Έ μΈν°νμ΄μ€λ₯Ό νμ₯ν΄μ ꡬν체λ₯Ό λ§λλ λ°©μμ μ¬μ©ν΄μΌ νλ€.
ν΄λΌμ΄μΈνΈκ° λλ κ°μ²΄ μ
μ₯μμ μΈν°νμ΄μ€λ₯Ό μμ‘΄νλ―λ‘, ꡬνμ²΄κ° λ°λμ΄λ μ½λλ₯Ό λ°λ‘ λ°κΏ νμκ° μλ€.
μ΄λ κ² λ³κ²½ν νμκ° μλ μ μ λ³κ²½μλ νμλμ΄ μλ€
λΌκ³ νλ€.
λν, μλ‘μ΄ νΈλν°μ΄ μΆκ°λμ΄λ κ°μ΄λλΌμΈμ μ§ν€λ©΄ μ¬μ©μκ° μ¬μ©λ²μ λ€μ μ΅ν νμ μλ―μ΄, μΈν°νμ΄μ€λ₯Ό νμ₯νλ ꡬν체λ₯Ό 무μν λ§λ€λλΌλ, ν΄λΌμ΄μΈνΈ μ
μ₯μμλ λ³κ²½μ λ«νμλ€.
μ΄λ¬ν μν©μ νμ₯μλ κ°λ°©λμ΄ μλ€.
λΌκ³ νλ€.
μ λ μ¬νμ μ€μνλ©΄μ κ°μ²΄μ§ν₯ μ€κ³λ₯Ό νλ μμΉμ΄ OCP(Open Closed Principle) : κ°λ°© νμ μμΉ
μ΄λ€.
DIP(Dependency Inversion Principle) : μμ‘΄ μμ μμΉ
DIP -> μμ‘΄ μμ μμΉμ ν λ§λλ‘ μ μνλ©΄ μμ ν΄λμ€λ νμ ν΄λμ€μ μμ‘΄νλ©΄ μλλ€.
λΌλ μμΉμ΄λ€.
λ νμ΄μ°λ©΄ μμ£Ό λ³νκ³ , ꡬ체μ μΈ κ²μ μμ‘΄νλ©΄ μ λκ³ , μμ£Ό λ³νμ§ μκ³ μΆμμ μ΄κ³ μμ£Ό λ³νμ§ μλ κ²μ μμ‘΄ν΄μΌ λλ€λ μμΉμ΄λ€.
DIPλ μμ OCPλ₯Ό μ΄ν΄νλ€λ©΄ μμνκ² μκ°ν μ μλ€.
μμ μμ μμ μ¬μ©μκ° μμ΄ν°, μλλ‘μ΄λν°κ³Ό κ°μ΄ ꡬ체μ μ΄κ³ μμ£Ό λ³νλ κ²μ μμ‘΄νλ κ²μ΄ μλ, κ°μ΄λλΌμΈμ μμ‘΄νλ€.
κ°μ²΄μ§ν₯μμλ ν΄λΌμ΄μΈνΈκ° μΈν°νμ΄μ€μ μμ‘΄νλ©΄ μΈν°νμ΄μ€ μλμ ꡬνμ²΄κ° λ³ν΄λ μ μ§ λ³΄μμ μ’μ κ°μ²΄μ§ν₯μ μ€κ³μ ν¨κ³Όλ₯Ό λ릴 μ μλ€.
μμ ν¨μ¨μ μΈ μ μ§ λ³΄μλ₯Ό μν΄ κ°μ²΄μ§ν₯μμ λ€νμ±μ νμ©ν΄μ OCPμ DIPλ₯Ό μΌλμ λκ³ μ€κ³νλ κ²μ΄ μ€μνλ€.
'Java > Java μ΄λ‘ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
UML Symbol(ν΄λμ€ κ°μ κ΄κ³) (0) | 2022.03.13 |
---|---|
μλ°λΉ κ·μ½ (0) | 2022.03.12 |
Javaλ‘ GUI νμκ΄λ¦¬ λ§λ€κΈ°(Swing) (0) | 2022.03.11 |
Builder ν¨ν΄ (Java) (0) | 2022.03.08 |
μ΄λν° ν¨ν΄ (Adapter Pattern) (0) | 2022.03.07 |