MVC νŒ¨ν„΄

2020. 5. 16. 18:41Β·πŸ“ Computer Science/✏ Design Pattern

MVC(Model-View-Controller) νŒ¨ν„΄

μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ 맀우 널리 μ‚¬μš©λ˜λŠ” λ””μžμΈ νŒ¨ν„΄μœΌλ‘œ 크게 λͺ¨λΈ, λ·°, 컨트둀러둜 κ΅¬μ‘°ν™”ν•œλ‹€.

  • λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 ν”„λ ˆμ  ν…Œμ΄μ…˜ λ‘œμ§μ„ λ‚˜λˆ„μ–΄μ„œ μ²˜λ¦¬ν•œλ‹€. μ‰½κ²Œ 말해 연산을 ν•˜λŠ” 업무와 μ‚¬μš©μžκ°€ λ³΄λŠ” 화면을 λ§Œλ“œλŠ” 업무λ₯Ό λΆ„λ¦¬ν•΄μ„œ μ²˜λ¦¬ν•˜λŠ” 방식이라고 λ³Ό 수 μžˆλ‹€.
  • μ½”λ“œμ˜ 양이 λ§Žμ•„μ Έλ„ μœ μ§€ λ³΄μˆ˜κ°€ νŽΈν•˜κ³  ν™•μž₯이 μš©μ΄ν•˜λ‹€.
  • μ—¬λŸ¬ 개의 λ·°λ₯Ό λ§Œλ“€ 수 μžˆμœΌλ―€λ‘œ λŒ€ν™”ν˜• μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ ν•©ν•˜λ‹€. λŒ€ν™”ν˜• μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λž€ μ‚¬μš©μžμ˜ μš”κ΅¬κ°€ λ°œμƒν•˜λ©΄ μ‹œμŠ€ν…œμ΄ 이λ₯Ό μ²˜λ¦¬ν•˜κ³  λ°˜μ‘ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§ν•œλ‹€.

 

MVC ꡬ쑰

 

1. ꡬ성 μš”μ†Œ

1) λͺ¨λΈ(Model)

  • μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 뢀뢄이닀.
  • DB에 μ—°κ²°ν•˜κ³  데이터λ₯Ό μΆ”μΆœν•˜κ±°λ‚˜ μ €μž₯, μ‚­μ œ, κ°±μ‹  λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.
  • λ‚΄λΆ€ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ— ν•΄λ‹Ήλœλ‹€.

 

2) λ·°(View)

  • μ»¨νŠΈλ‘€λŸ¬λ‘œλΆ€ν„° 받은 λͺ¨λΈμ˜ κ²°κ³Ό 값을 κ°€μ§€κ³  μ‚¬μš©μžμ—κ²Œ 좜λ ₯ν•  화면을 λ§Œλ“€κ³  μ›ΉλΈŒλΌμš°μ €μ— μ „μ†‘ν•˜μ—¬ 좜λ ₯ν•œλ‹€.
  • 화면에 ν‘œμ‹œλ˜λŠ” λΆ€λΆ„μœΌλ‘œ μΆ”μΆœν•œ λ°μ΄ν„°λ‚˜ ν…μŠ€νŠΈλ₯Ό ν‘œμ‹œν•˜κ±°λ‚˜ μΈν„°νŽ˜μ΄μŠ€ 역할을 ν•œλ‹€.
  • μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€μ— ν•΄λ‹Ήλœλ‹€.

 

3) 컨트둀러(Controller)

  • ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•˜κ³  흐름 μ œμ–΄λ₯Ό λ‹΄λ‹Ήν•œλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 데이터가 μžˆλ‹€λ©΄ λͺ¨λΈμ— μ „λ‹¬ν•˜κΈ° μ‰½κ²Œ 데이터λ₯Ό κ°€κ³΅ν•˜κ³  λͺ¨λΈμ΄ 업무λ₯Ό 마치면 κ·Έ κ²°κ³Όλ₯Ό λ·°μ—κ²Œ μ „λ‹¬ν•œλ‹€.
  • λͺ¨λΈκ³Ό λ·° μ‚¬μ΄μ—μ„œ μ€‘κ³„μž 역할을 μˆ˜ν–‰ν•œλ‹€.

 

2. JSP의 ꡬ쑰

JSP둜 ꡬ성할 수 μžˆλŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κ΅¬μ‘°λŠ” 크게 λͺ¨λΈ 1κ³Ό λͺ¨λΈ 2둜 λ‚˜λ‰œλ‹€.

 

1) λͺ¨λΈ 1

  • JSP에 μ»¨νŠΈλ‘€λŸ¬μ™€ λ·°λ₯Ό ν•¨κ»˜ κ΅¬ν˜„ν•˜λŠ” 방식이닀.
  • μ›Ή λΈŒλΌμš°μ € μ‚¬μš©μžμ˜ μš”μ²­μ„ 받은 JSPλŠ” μ›Ή λΈŒλΌμš°μ €κ°€ μš”μ²­ν•œ μž‘μ—…μ„ μ²˜λ¦¬ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό 좜λ ₯ν•΄μ€€λ‹€.
  • λΉ λ₯΄κ³  μ‰½κ²Œ κ°œλ°œν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆμ§€λ§Œ, JSP 파일이 λ„ˆλ¬΄ λΉ„λŒ€ν•΄μ§€κ³  μœ μ§€λ³΄μˆ˜μ— 어렀움이 μžˆλ‹€.

 

λͺ¨λΈ 1

 

2) λͺ¨λΈ 2

  • μ»¨νŠΈλ‘€λŸ¬μ™€ 뷰의 역할을 λͺ¨λ‘ μˆ˜ν–‰ν•˜λ˜ JSPλŠ” 뷰의 μ—­ν• λ§Œ ν•˜κ²Œ ν•˜κ³  컨트둀러 역할은 Servlet이 μˆ˜ν–‰ν•˜λŠ” 방식이닀.
  • μ›Ή λΈŒλΌμš°μ € μ‚¬μš©μžμ˜ μš”μ²­μ„ Servlet이 λ°›κ³  μš”μ²­μ„ View둜 보여쀄 것인지, Model둜 보내쀄 것인지 μ •ν•˜μ—¬ μ „μ†‘ν•œλ‹€. μ—¬κΈ°μ„œ View νŽ˜μ΄μ§€λŠ” μ‚¬μš©μžμ—κ²Œ λ³΄μ—¬μ£ΌλŠ” μ—­ν• λ§Œ λ‹΄λ‹Ήν•˜κ³  μ‹€μ§ˆμ μΈ κΈ°λŠ₯의 뢀뢄은 Modelμ—μ„œ λ‹΄λ‹Ήν•œλ‹€.
  • λ””μžμ΄λ„ˆμ™€ 개발자의 뢄업이 κ°€λŠ₯ν•˜μ—¬ μœ μ§€λ³΄μˆ˜μ— μš©μ΄ν•˜μ§€λ§Œ, 섀계와 개발의 λ‚œμ΄λ„κ°€ λ†’λ‹€.

 

λͺ¨λΈ 2

 

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Computer Science/✏ Design Pattern' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [κ²Œμž„ ν”„λ‘œκ·Έλž˜λ° νŒ¨ν„΄] κ²Œμž„ 루프 νŒ¨ν„΄(Game Loop Pattern)
  • μ˜΅μ €λ²„ νŒ¨ν„΄(Observer Pattern)
  • 싱글톀 νŒ¨ν„΄(Singleton Pattern)
  • λ””μžμΈ νŒ¨ν„΄(Design Pattern)
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
MVC νŒ¨ν„΄
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”