λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸš€ Backend

[Spring Basic] 객체 지ν–₯ 섀계와 μŠ€ν”„λ§

by dev.py 2024. 1. 18.

https://www.inflearn.com/course/μŠ€ν”„λ§-핡심-원리-기본편

μŠ€ν”„λ§μ΄λž€?

  • μžλ°” μ–Έμ–΄ 기반의 ν”„λ ˆμž„μ›Œν¬ -> 객체 지ν–₯
  • 객체 지ν–₯ μ–Έμ–΄κ°€ 가진 κ°•λ ₯ν•œ νŠΉμ§•μ„ μ‚΄λ €λ‚΄λŠ” ν”„λ ˆμž„μ›Œν¬
  • "쒋은" 객체 지ν–₯ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 개발 ν•  수 있게 λ„μ™€μ£ΌλŠ” ν”„λ ˆμž„ μ›Œν¬
  • μŠ€ν”„λ§ DI μ»¨ν…Œμ΄λ„ˆ, AOP, 이벀트, MVC, WebFlux, νŠΈλž™μž­μ…˜, JDBC, ORM 지원 ... λ“±λ“± 정말 λ‹€ μžˆλ‹€

https://docs.spring.io/spring-framework/docs/4.3.x/spring-framework-reference/html/overview.html

 

 

ν”νžˆ λ§ν•˜λŠ” "쒋은" 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°

  • 좔상화
  • μΊ‘μŠν™”
  • 상속
  • λ‹€ν˜•μ„±

μ—­ν• κ³Ό κ΅¬ν˜„μœΌλ‘œ κ΅¬λΆ„ν•΄μ„œ 세상을 바라보고 또 μ½”λ”©ν•˜λ©΄ λ‹¨μˆœν•΄μ§€κ³ , μœ μ—°ν•΄μ§€κ³ , 변경도 νŽΈλ¦¬ν•΄μ§„λ‹€.

μ—­ν• (μΈν„°νŽ˜μ΄μŠ€) - κ΅¬ν˜„(μΈμŠ€ν„΄μŠ€, κ΅¬ν˜„ 클래슀)을  μœ μ—°ν•˜κ²Œ λ³€κ²½ν•  수 있게 되면 μ½”λ“œκ°€ μœ μ—°ν•΄μ§„λ‹€.

 

 

μŠ€ν”„λ§κ³Ό 객체 지ν–₯

  • λ‹€ν˜•μ„±μ΄ κ°€μž₯ μ€‘μš”ν•˜λ‹€.
  • μŠ€ν”„λ§μ€ λ‹€ν˜•μ„±μ„ κ·ΉλŒ€ν™”ν•΄μ„œ μ΄μš©ν•  수 있게 도와쀀닀.
  • μ œμ–΄μ˜ μ—­μ „(IoC), μ˜μ‘΄κ΄€κ³„ μ£Όμž…(DI)은 λ‹€ν˜•μ„±μ„ ν™œμš©ν•΄μ„œ μ—­ν• κ³Ό κ΅¬ν˜„μ„ νŽΈλ¦¬ν•˜κ²Œ λ‹€λ£° 수 μžˆλ„λ‘ μ§€μ›ν•œλ‹€.

 

 

객체 지ν–₯ 원칙 SOLID 와 μŠ€ν”„λ§

  • SRP (단일 μ±…μž„ 원칙)
  • OCP (개방 폐쇄 원칙) 
  • LSP (λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙)
  • ISP (μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙)
  • DIP (μ˜μ‘΄κ΄€κ³„ μ—­μ „ 원칙)

μŠ€ν”„λ§μ€ 객체 지ν–₯ SOLIDλ₯Ό μ•„μ£Ό 잘 지킬 수 μžˆλ„λ‘ 도와 μ€€λ‹€.

특히 κ΅¬ν˜„ 클래슀λ₯Ό λ³€κ²½ ν–ˆμ„ λ•Œ, 객체λ₯Ό μƒμ„±ν•˜κ³ , μ—°κ΄€ 관계λ₯Ό λ§Ίμ–΄μ£ΌλŠ” λ³„λ„μ˜ 쑰립자, μ„€μ •μžμ˜ 역할을 ν•΄μ€€λ‹€.

 

 

λ‹€μŒ κ°•μ˜ λ‚΄μš©μ„ 기반으둜 μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€. 
https://www.inflearn.com/course/μŠ€ν”„λ§-핡심-원리-기본편