SOLID

SOLID 원칙은 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ†Œν”„νŠΈμ›¨μ–΄ μ„€κ³„μ˜ μœ μ—°μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μ΄κ³ μž ν•˜λŠ” 5κ°€μ§€ κΈ°λ³Έ 원칙을 μ˜λ―Έν•¨. 이 원칙은 λ‘œλ²„νŠΈ λ§ˆν‹΄μ΄ μ œμ•ˆν•œ 섀계 μ² ν•™μœΌλ‘œ, μ†Œν”„νŠΈμ›¨μ–΄ μ„€κ³„μ—μ„œ μ˜μ‘΄μ„± 문제λ₯Ό 쀄이고 μž¬μ‚¬μš©μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” 데 μ΄ˆμ μ„ 맞좀.


1. S: 단일 μ±…μž„ 원칙(Single Responsibility Principle, SRP)

  • 의미 : ν΄λž˜μŠ€λŠ” 단 ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό 함.

  • λͺ©ν‘œ : ν΄λž˜μŠ€κ°€ ν•˜λ‚˜μ˜ λ³€κ²½ 이유만 가지도둝 λ§Œλ“€μ–΄ μœ μ§€λ³΄μˆ˜λ₯Ό μ‰½κ²Œν•¨.

  • μ˜ˆμ‹œ:

    • 잘λͺ»λœ 섀계 : ν•˜λ‚˜μ˜ ν΄λž˜μŠ€κ°€ λ°μ΄ν„°λ² μ΄μŠ€ μ²˜λ¦¬μ™€ UI λ Œλ”λ§μ„ λͺ¨λ‘ λ‹΄λ‹Ή

    • μ˜¬λ°”λ₯Έ 섀계 : λ°μ΄ν„°λ² μ΄μŠ€ μ²˜λ¦¬μ™€ UIλ Œλ”λ§μ„ λ³„λ„μ˜ 클래슀둜 뢄리


2. O: 개방-폐쇄 원칙 (Open/Closed Principle, OCP)

  • 의미 : μ†Œν”„νŠΈμ›¨μ–΄ μ—”ν‹°ν‹°(클래슀, λͺ¨λ“ˆ, ν•¨μˆ˜ λ“±)λŠ” ν™•μž₯μ—λŠ” μ—΄λ € μžˆμ–΄μ•Ό ν•˜μ§€λ§Œ λ³€κ²½μ—λŠ” λ‹«ν˜€μžˆμ–΄μ•Όν•¨.

  • λͺ©ν‘œ : κΈ°μ‘΄ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³  μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆλ„λ‘ 섀계함.

  • μ˜ˆμ‹œ :

    • 잘λͺ»λœ 섀계 : μƒˆλ‘œμš΄ μš”κ΅¬μ‚¬ν•­μ΄ 생길 λ•Œ κΈ°μ‘΄ 클래슀의 μ½”λ“œλ₯Ό λ³€κ²½

    • μ˜¬λ°”λ₯Έ 섀계 : μΈν„°νŽ˜μ΄μŠ€λ‚˜ 좔상 클래슀λ₯Ό 톡해 κΈ°λŠ₯을 ν™•μž₯


3. L: λ¦¬μŠ€μ½”ν”„ 원칙(Liskov Substitution Princilple, LSP)

  • 의미: μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀의 역할을 λŒ€μ²΄ν•  수 μžˆμ–΄μ•Ό 함.

  • λͺ©ν‘œ : ν”„λ‘œκ·Έλž¨μ΄ λΆ€λͺ¨ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 경우, μžμ‹ 클래슀의 μΈμŠ€ν„΄μŠ€λ‘œ λŒ€μ²΄ν•΄λ„ λ™μž‘μ— λ¬Έμ œκ°€ 없어야함.

  • μ˜ˆμ‹œ :

    • 잘λͺ»λœ 섀계 : μžμ‹ ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ 클랫의 λ©”μ„œλ“œλ₯Ό λ¬΄νš¨ν™”ν•˜κ±°λ‚˜ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚΄.

    • μ˜¬λ°”λ₯Έ 섀계 : μžμ‹ ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μ˜¬λ°”λ₯΄κ²Œ μž¬μ •μ˜


4. I: μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙(Interface Segregation Priciple, ISP)

  • 의미 : νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ©”μ„œλ“œμ— μ˜μ‘΄ν•˜μ§€ μ•Šλ„λ‘ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 뢄리해야함.

  • λͺ©ν‘œ : ν•„μš”νžˆμ§€ μ•Šμ€ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•œ μ˜μ‘΄μ„±μ„ μ€„μž„.

  • μ˜ˆμ‹œ :

    • 잘λͺ»λœ 섀계 : ν•˜λ‚˜μ˜ μΈν„°νŽ˜μ΄μŠ€κ°€ λͺ¨λ“  λ©”μ„œλ“œλ₯Ό ν¬ν•¨ν•˜μ—¬ νŠΉμ • κ΅¬ν˜„μ—μ„œ λΆˆν•„μš”ν•œ λ©”μ„œλ“œκΉŒμ§€ κ°•μ œ

    • μ˜¬λ°”λ₯Έ 섀계 : μ—­ν• λ³„λ‘œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λΆ„λ¦¬ν•˜μ—¬ 각 ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•„μš”ν•œ λ©”μ„œλ“œλ§Œ μ‚¬μš©.


5. D: μ˜μ‘΄μ„± μ—­μ „ 원칙(Dependency Inversion Principle, DIP)

  • 의미 : κ³ μˆ˜μ€€ λͺ¨λ“ˆμ΄ μ €μˆ˜μ€€ λͺ¨λ“ˆμ— μ˜μ‘΄ν•΄μ„œλŠ” μ•ˆλ˜κ³ , λ‘˜ λ‹€ μΆ”μƒν™”λœ μΈν„°νŽ˜μ΄μŠ€μ— μ˜μ‘΄ν•΄μ•Ό 함.

  • λͺ©ν‘œ : κ΅¬ν˜„μ΄ μ•„λ‹Œ 좔상화에 μ˜μ‘΄ν•¨μœΌλ‘œμ¨ λͺ¨λ“ˆ κ°„ 결합도λ₯Ό μ€„μž„.

  • μ˜ˆμ‹œ :

    • 잘λͺ»λœ 섀계 : μƒμœ„ ν΄λž˜μŠ€κ°€ ν•˜μœ„ 클래슀의 ꡬ체적인 κ΅¬ν˜„μ— 의쑴

    • μ˜¬λ°”λ₯Έ 섀계 : μƒμœ„ ν΄λž˜μŠ€μ™€ ν•˜μœ„ 클래슀 λͺ¨λ‘ μΈν„°νŽ˜μ΄μŠ€λ‚˜ 좔상 ν΄λž˜μŠ€μ— 의쑴


SOLID μ›μΉ™μ˜ μž₯점.

  1. μœ μ§€λ³΄μˆ˜μ„± : μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λ”λΌκ³  λ‹€λ₯Έ 뢀뢄에 영ν–₯을 μ΅œμ†Œν™”

  2. μž¬μ‚¬μš©μ„± : μ½”λ“œλ₯Ό λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μ‰½κ²Œ μž¬μ‚¬μš© κ°€λŠ₯

  3. ν™•μž₯μ„± : μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€κ°€ 용이

  4. 가독성 : μ½”λ“œκ°€ λͺ…ν™•ν•˜κ³  μ§κ΄€μ μœΌλ‘œ μž‘μ„±λ¨.

Last updated

Was this helpful?