NOW-ON / iOS-Interview-Preparation

iOS λ©΄μ ‘ μ€€λΉ„
3 stars 0 forks source link

SOLID #14

Closed Glsme closed 1 year ago

Glsme commented 1 year ago

πŸ—“οΈ 마감일

2023.01.29

πŸ’ μ°Έμ—¬μž

⚠️ λ§ˆμ§€λ§‰μœΌλ‘œ λ‹΅λ³€ 단 μ‚¬λžŒμ΄ 이슈 close ν•˜κ³  λ¦¬λ“œλ―Έμ— ν•­λͺ© μ—…λ°μ΄νŠΈ ν•΄μ£Όμ„Έμš”.

Yun-YeoJin commented 1 year ago

ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ‹œκ°„μ΄ μ§€λ‚˜λ„ μœ μ§€ λ³΄μˆ˜μ™€ ν™•μž₯이 μ‰¬μš΄ μ‹œμŠ€ν…œμ„ λ§Œλ“€κ³ μž ν•  λ•Œ 이 원칙듀을 ν•¨κ»˜ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. SOLID 원칙듀은 μ†Œν”„νŠΈμ›¨μ–΄ μž‘μ—…μ—μ„œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ†ŒμŠ€ μ½”λ“œκ°€ 읽기 쉽고 ν™•μž₯ν•˜κΈ° μ‰½κ²Œ 될 λ•ŒκΉŒμ§€ μ†Œν”„νŠΈμ›¨μ–΄ μ†ŒμŠ€ μ½”λ“œλ₯Ό λ¦¬νŽ™ν† λ§ ν•˜μ—¬ μ½”λ“œ λƒ„μƒˆ(μ½”λ“œμ—μ„œ 더 μ‹¬μ˜€ν•œ 문제λ₯Ό μΌμœΌν‚¬ κ°€λŠ₯성이 μžˆλŠ” μ½”λ“œμ˜ νŠΉμ§•)λ₯Ό μ œκ±°ν•˜κΈ° μœ„ν•΄ μ μš©ν•  수 μžˆλŠ” μ§€μΉ¨μž…λ‹ˆλ‹€!

즉, 객체 섀계에 ν•„μš”ν•œ 5가지 μ›μΉ™μœΌλ‘œμ¨ μœ μ§€λ³΄μˆ˜κ°€ 쉽고, μœ μ—°ν•˜κ³ , ν™•μž₯이 μ‰¬μš΄ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ μˆ˜λ‹¨

1. SRP (Single Responsibility) - 단일 μ±…μž„ 원칙

2. OCP (Open-Closed) - 개방-폐쇄 원칙

3. LSP (Liskov Substitution) - λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙

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

5. DIP (Dependency Inversion) - 의쑴 μ—­μ „ 원칙

Glsme commented 1 year ago

SOLID 원칙

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ‹œ μ§€μΌœμ•Ό ν•  SRP, OCP, LSP, ISP, DIP 원칙을 μ •λ¦¬ν•œ μš©μ–΄μ΄λ‹€.



S: Single Responsibility Principle

LeeJoobang commented 1 year ago

SOLID

SOLIDλž€? 객체 지ν–₯ ν”„λ‘œκ·Έλž¨ 및 μ„€κ³„μ˜ 닀섯가지 κΈ°λ³Έ 원칙

  1. S(SRP - 단일 μ±…μž„ 원칙)
  1. O(OCP - 개방 폐쇄 원칙)
  1. L(LSP - λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙)
  1. I(ISP - μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙)
  1. D(DIP - μ˜μ‘΄κ΄€κ³„ μ—­μ „ 원칙)
heydoy commented 1 year ago

SOLID 원칙

SOLIDλŠ” 객체지ν–₯의 5가지 원칙을 의미

  1. Single Responsibility Principle λ‹¨μΌμ±…μž„ 원칙
  2. Open/Closed Principle 개방/폐쇄 원칙
  3. Liskov Substitution Principle λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙
  4. Interface Segregation μΈν„°νŽ˜μ΄μŠ€ 뢄리
  5. Dependency Inversion μ˜μ‘΄μ„± μ—­μ „

Single Responsibility Principle

λͺ¨λ“  λͺ¨λ“ˆμ€ 단 ν•˜λ‚˜μ˜ μ±…μž„μ„ κ°€μ Έμ•Ό ν•œλ‹€λŠ” 것.

Open/Closed principle

extensionμ—λŠ” 개방, μˆ˜μ •μ—λŠ” 폐쇄

Liskov Substitution Principle

베이슀 ν΄λž˜μŠ€μ— ν¬μΈν„°λ‚˜ μ°Έμ‘°λ₯Ό μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜λŠ” λ°˜λ“œμ‹œ νŒŒμƒλœ 클래슀의 객체λ₯Ό (μ•Œμ§€λͺ»ν•˜λ”라도) μ‚¬μš©ν•  수 μžˆμ–΄μ•Όν•œλ‹€.

Interface Segregation Principle (ISP)

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•„μ•Όν•˜λŠ” 것. ν•˜λ‚˜μ˜ 큰 μΈν„°νŽ˜μ΄μŠ€λ³΄λ‹€, 각각 ν•˜λ‚˜μ˜ μž‘μ€ μ„œλΈŒλͺ¨λ“ˆμ„ μ œκ³΅ν•˜λŠ” λ©”μ„œλ“œ 그룹의 μž‘μ€ μΈν„°νŽ˜μ΄μŠ€κ°€ λ§Žμ€ 것이 더 μ„ ν˜Έλ¨.

Dependency Inversion Principle

μƒμœ„λ ˆλ²¨ λͺ¨λ“ˆμ€ ν•˜μœ„λ ˆλ²¨ λͺ¨λ“ˆμ— μ˜μ‘΄ν•΄μ„œλŠ” μ•ˆλ˜λ©°, λ‘˜ λ‹€ 좔상화에 μ˜μ‘΄ν•΄μ•Όν•œλ‹€. μΆ”μƒν™”λŠ” 세뢀사항에 μ˜μ‘΄ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, 세뢀사항이 좔상화에 μ˜μ‘΄ν•΄μ•Ό ν•œλ‹€.

wodyddml2 commented 1 year ago

SRP(Single Responsiblity Principle) - 단일 μ±…μž„ 원칙

- ν΄λž˜μŠ€λ‚˜ ν•¨μˆ˜λ₯Ό 섀계할 λ•Œ, 각 λ‹¨μœ„λ“€μ€ 단 ν•˜λ‚˜μ˜ μ±…μž„ λ§Œμ„ κ°€μ Έμ•Ό ν•˜λŠ” 원칙
- ν•˜λ‚˜μ˜ ν΄λž˜μŠ€μ— ν•˜λ‚˜μ˜ μ±…μž„ λ§Œμ„ κ°€μ Έμ•Όν•œλ‹€.
    - ex) APIService, Repository

OCP(Open-Closed Principle) - 개방-νŒ¨μ‡„ 원칙

- 기쑴의 μ½”λ“œλŠ” λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ(Closed), κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆλ„λ‘(Open) 섀계
- 기쑴의 μ½”λ“œλ₯Ό λ³€κ²½ν•΄μ•Όν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— κΈ°λŠ₯ μΆ”κ°€λ§Œ ν•  수 μžˆλ„λ‘ 좔상화 μž‘μ—…μ΄ μ€‘μš”ν•˜λ‹€.

LSP(Liskov Substitution Principle) - λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙

- λΆ€λͺ¨ 클래슀 μΈμŠ€ν„΄μŠ€λ‘œ λŒμ•„κ°€λŠ” 곳에, μžμ‹ 클래슀 μΈμŠ€ν„΄μŠ€λ₯Ό λ„£μ—ˆμ„ λ•Œ λ™μΌν•œ κ²°κ³Ό 값을 λ‚˜νƒ€λ‚΄μ•Ό ν•œλ‹€.

ISP(Interface Segregation Principle) - μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙

- μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μΈν„°νŽ˜μ΄μŠ€λŠ” κ΅¬ν˜„ν•˜μ§€ λ§μ•„μ•Όν•œλ‹€.
    - ex) ν”„λ‘œν† μ½œ μ‚¬μš© μ‹œ

DIP(Dependency Inversion Principle) - μ˜μ‘΄κ΄€κ³„ μ—­μ „ 원칙

- μƒμœ„ λͺ¨λ“ˆμ€ ν•˜μœ„ λͺ¨λ“ˆμ— μ˜μ‘΄ν•΄μ„œλŠ” μ•ˆλ˜λ©°, 두 λͺ¨λ“ˆ λͺ¨λ‘ 좔상화에 μ˜μ‘΄ν•˜κ²Œ λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.
    - 보톡 ν”„λ‘œν† μ½œ(좔상화)λ₯Ό λ§Œλ“€μ–΄ μ˜μ‘΄ν•˜κ²Œ ν•œλ‹€. 
    - 즉, 쀑간 닀리 μ—­ν• , μœ μ§€λ³΄μˆ˜ κ°œμ΄λ“