SOLID
ν΄λ¦°μ½λλ‘ μ λͺ ν λ‘λ²νΈ λ§ν΄μ΄ μ μν κ°μ²΄ μ§ν₯ μ€κ³μ 5κ°μ§ μμΉ
SRP: λ¨μΌ μ±
μ μμΉ(Single Responsibility Principle)
νλμ ν΄λμ€λ νλμ μ± μ(λͺ©μ )λ§ κ°μ ΈμΌ νλ€.
μ± μμ ν΄ μλ μκ³ , μμ μλ μμΌλ©° μν©μ λ°λΌ λ€λ₯΄λ€.
ν΄λμ€λ₯Ό λ³κ²½νλ μ΄μ κ° νλμ μ΄μ μ¬μΌ νλ€.
λ³κ²½μ μ©μ΄νκ² μ€κ³νλ€λ©΄ λ¨μΌ μ± μ μμΉμ μ λ°λ₯Έ κ²
Order ν΄λμ€λ μ£Όλ¬Έμ κ΄λ ¨λ μ± μλ§ κ°μ§κ³ μκ³ , Item ν΄λμ€λ μμ΄ν μ κ΄λ ¨λ μ± μλ§ κ°μ§κ³ μλ€.
OCP: κ°λ°©-νμ μμΉ (Open-Closed principle)
νμ₯μ μ΄λ €μμΌλ, λ³κ²½μλ λ«νμμ΄μΌ νλ€.
μλ‘μ΄ κΈ°λ₯μ μΆκ°ν λ κΈ°μ‘΄ μ½λλ₯Ό λ³κ²½νμ§ μκ³ νμ₯ν μ μλλ‘ μ€κ³ν΄μΌ νλ€.
μ μ½λμμ κΈ°λ₯μ μΆκ°νκΈ° μν΄μλ Shape μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€λ§ μΆκ°νλ©΄ λλ€.
LSP: 리μ€μ½ν μΉν μμΉ (Liskov Substitution Principle)
κ°μ²΄λ μ νμ±μ κΉ¨λ¨λ¦¬μ§ μμΌλ©΄μ μμ ν΄λμ€μ κ°μ²΄λ₯Ό νμ ν΄λμ€λ‘ λ체 κ°λ₯ν΄μΌ νλ€.
λΆλͺ¨ ν΄λμ€μ κ·μ μ μμ ν΄λμ€κ° λ€ μ§μΌμΌ νλ€λ κ²μ μλ―Ένλ€.
μ μ½λμμ μλ¬κ° λ°μνμ§ μμ§λ§ λμ΄λ₯Ό ꡬνλλ°μ λ Όλ¦¬μ μΈ μ°¨μ΄κ° μμ΄ μλνμ§ μμ κ²°κ³Όκ° λμ¬ μ μλ€.
ISP: μΈν°νμ΄μ€ λΆλ¦¬ μμΉ (Interface segregation principle)
μ¬λ¬ κΈ°λ₯μ ν¬ν¨ν λ²μ© μΈν°νμ΄μ€ λ³΄λ¨ νΉμ ν΄λΌμ΄μΈνΈλ₯Ό μν μΈν°νμ΄μ€ μ¬λ¬ κ°λ₯Ό μμ±νλ κ²μ΄ μ’λ€.
μΈν°νμ΄μ€κ° λͺ νν΄μ§λ©° λ체 κ°λ₯μ±μ΄ λμμ§λ€.
μΈν°νμ΄μ€λ₯Ό μ¬λ¬ κ°λ‘ λΆλ¦¬νμ¬ ν΄λμ€μ νμν μΈν°νμ΄μ€λ§ ꡬννλλ‘ νλ©΄, νμν κΈ°λ₯λ§ μ¬μ©ν μ μκ³ , λ체 κ°λ₯μ±λ λμμ§λ€. λν λΆνμν λ©μλλ₯Ό ꡬννμ§ μμλ λκ³ , μ¬μ©νλ ν΄λΌμ΄μΈνΈμκ² λΆνμν λ©μλλ₯Ό λ ΈμΆμν€μ§ μλ μ₯μ μ΄ μλ€.
DIP: μμ‘΄ μμ μμΉ (Dependency inversion principle)
"μΆμνμ μμ‘΄ν΄μΌνκ³ , ꡬ체νμ μμ‘΄νλ©΄ μλλ€."λ₯Ό λ°λ₯΄λ μμΉ
ꡬν ν΄λμ€μ μμ‘΄νμ§ μκ³ , μΈν°νμ΄μ€μ μμ‘΄ν΄μΌ νλ€.
ꡬν체μ μμ‘΄νκ² λλ©΄ λ³κ²½μ΄ μ΄λ €μμ§κ³ , ν μ€νΈλ μ΄λ €μμ§λ€.
μ μ½λλ μΈν°νμ΄μ€μ μ‘΄μ¬λ‘ OrderService -> PaymentProvider <- KakaoPaymentProvider
λ‘ μμ‘΄ λ°©ν₯μ΄ μμ λμκΈ° λλ¬Έμ, λ³κ²½μ΄ μ©μ΄ν΄μ§ μ½λκ° λλ€.
νμ§λ§ μΈν°νμ΄μ€κ° μμλ€λ©΄ OrderService -> KakaoPaymentProvider
λ‘ μμ‘΄νκ² λμ΄ λ³κ²½μ΄ μ΄λ €μμ§κ³ , ν
μ€νΈλ μ΄λ ΅κ² λλ€.
Last updated
Was this helpful?