Architecture

MVC νŒ¨ν„΄ μ•Œμ•„λ³΄κΈ°

hyunki.Dev 2023. 11. 3. 17:30

 

πŸ“Œ MVC νŒ¨ν„΄μ΄λž€?

μ†Œν”„νŠΈμ›¨μ–΄ 섀계 μ‹œ μ‚¬μš©ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ νŒ¨ν„΄μ˜ ν•œ μ’…λ₯˜μž…λ‹ˆλ‹€.

Model-View-Controller νŒ¨ν„΄μ˜ μ•½μžμž…λ‹ˆλ‹€.

이 νŒ¨ν„΄μ„ μ‚¬μš©ν•¨μœΌλ‘œμ¨, μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(Interface)λ‘œλΆ€ν„° λΉ„μ¦ˆλ‹ˆμŠ€ 둜직(Logic)을 λΆ„λ¦¬ν•˜κ³ ,

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‹œκ°μ  μš”μ†Œμ™€ κ·Έ μ΄λ©΄μ—μ„œ μ‹€ν–‰λ˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 간에 영ν–₯을 μ΅œμ†Œν•œμœΌλ‘œ 쀄여, ν”„λ‘œκ·Έλž¨μ˜ μœ μ§€ λ³΄μˆ˜μ„±μ„ 높이고, μ„±λŠ₯을 ν–₯상 μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

즉,  μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ‘œλΆ€ν„° λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λΆ„λ¦¬ν•˜μ—¬

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‹œκ°μ  μš”μ†Œλ‚˜ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ„œλ‘œ 영ν–₯ 없이 μ‰½κ²Œ κ³ μΉ  수 μžˆλŠ”

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€κΈ° μœ„ν•œ μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ νŒ¨ν„΄μ΄λΌκ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 


 

πŸ“Œ MVC νŒ¨ν„΄μ˜ κ΅¬μ„±μš”μ†Œμ™€ 원칙

Model

  • 데이터와 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ΄€λ¦¬ν•œλ‹€. ⇒ λ°μ΄ν„°μ™€ κ΄€λ ¨λœ λΆ€λΆ„
  • 주둜 μƒνƒœ λ³€ν™”λ₯Ό μ²˜λ¦¬ν•œλ‹€. (μ΅œκ·Όμ—λŠ” Entity, VO, Aggregate둜 λ‚˜λˆ„μ–΄μ„œ κ΄€λ¦¬ν•œλ‹€. -> λ„메인 주도 섀계(DDD))
    데이터와 κ·Έ 데이터λ₯Ό ν†΅ν•œ 행동을 κ°–λŠ” 객체
  • View, Controller에 λŒ€ν•œ μ˜μ‘΄μ„ 가지면 μ•ˆλœλ‹€.
  • μ˜€λ‘œμ§€ 데이터에 λŒ€ν•œ 순수둜직 만 μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€.

View

  • Model의 데이터λ₯Ό μ‚¬μš©ν•΄ μ‹œκ°μ μΈ 화면을 κ΅¬μ„±ν•˜λŠ” 역할이닀. ⇒ μ‚¬μš©μžμ—κ²Œ λ³΄μ—¬μ§€λŠ” λΆ€λΆ„
  • μ‚¬μš©μžμ—κ²Œ λ³΄μ—¬μ§ˆ μΈν„°νŽ˜μ΄μŠ€(UI)λ₯Ό λ‹΄λ‹Ήν•˜λŠ” Layer 이닀
  • Modelκ³Ό μ˜μ‘΄μ„±μ„ κ°€μ§ˆμˆ˜λ„ 있고 μ•ˆκ°€μ§ˆμˆ˜λ„ μžˆλ‹€.
    • μ—¬κΈ°μ„œ λ§ν•˜λŠ” '의쑴'은 μ½”λ“œμƒμ˜ 의쑴이 μ•„λ‹Œ, 순수 도메인 데이터에 λŒ€ν•œ μ˜μ‘΄μ„ λ§ν•œλ‹€.
      즉, View에 μ‚¬μš©λ˜λŠ” 값은 μ˜€λ‘œμ§€ Model을 ν†΅ν•΄μ„œ μ „λ‹¬λœ κ°’μ΄μ–΄μ•Όλ§Œ ν•œλ‹€λŠ” 것이닀. 
  • 데이터 및 둜직과 κ΄€λ ¨λœ μ½”λ“œκ°€ μ—†μ–΄μ•Ό ν•œλ‹€.
  • Controllerμ—λŠ” μ˜μ‘΄μ„±μ„ 가지면 μ•ˆλœλ‹€.

Controller

  • μ‚¬μš©μžμ˜ μž…λ ₯을 λ°›μ•„μ„œ μ²˜λ¦¬ν•˜λŠ” μ—­ν• 
  • μΌμ’…μ˜ μ€‘κ°œμž 역할을 ν•œλ‹€
  • Model을 λ³€κ²½ν•˜κ³  Viewλ₯Ό κ°±μ‹  ⇒ Modelκ³Ό Viewλ₯Ό μ΄μ–΄μ£ΌλŠ” λΆ€λΆ„
  • "ControllerλŠ” Modelκ³Ό View에 μ˜μ‘΄ν•΄μ•Ό ν•œλ‹€!"
    • μ—¬κΈ°μ„œ λ§ν•˜λŠ” '의쑴'은, μ€‘κ°œμž μ—­ν• λ‘œμ„œμ˜ μ˜μ‘΄μ„ λ§ν•œλ‹€. 즉, Controller 혼자 데이터(Model μ˜μ—­)에 λŒ€ν•œ 처리λ₯Ό λ‹¨λ…μœΌλ‘œ ν•˜λ©΄ μ•ˆλœλ‹€λŠ” 말이닀.

 

 

 

 

 

 

 

 

좜처: 

https://co-no.tistory.com/120

https://gnuoyus.tistory.com/70