πŸ“Œ[λ””μžμΈ νŒ¨ν„΄] ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ (Template Method)

λͺ¨κΉ…Β·2023λ…„ 10μ›” 13일
0

λ””μžμΈ νŒ¨ν„΄

λͺ©λ‘ 보기
2/6
post-custom-banner

πŸ“– 01. Template Methodλž€?

μ•Œκ³ λ¦¬μ¦˜μ˜ ꡬ쑰λ₯Ό μ„œλΈŒ ν΄λž˜μŠ€κ°€ ν™•μž₯ν•  수 μžˆλ„λ‘ ν…œν”Œλ¦ΏμœΌλ‘œ μ œκ³΅ν•˜μ—¬ ꡬ체적인 방법을 μ„œλΈŒν΄λž˜μŠ€μ—κ²Œ μœ„μž„ν•˜λŠ” νŒ¨ν„΄μ΄λ‹€.

  • μΆ”μƒν΄λž˜μŠ€λŠ” ν…œν”Œλ¦Ώμ„ μ œκ³΅ν•˜κ³  ν•˜μœ„ ν΄λž˜μŠ€λŠ” ꡬ체적인 μ•Œκ³ λ¦¬μ¦˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
  • 전체적인 둜직 (큰 ν‹€)은 μƒμœ„ ν΄λž˜μŠ€μ— μ •μ˜λ˜μ–΄μžˆμ§€λ§Œ β†’ 세뢀적인 κ΅¬ν˜„μ€ ν•˜μœ„ ν΄λž˜μŠ€μ— 맑겨져 μžˆλŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€.
  • 즉, μƒμœ„ ν΄λž˜μŠ€μ—μ„œ 처리의 흐름을 μ œμ–΄ν•˜κ³ , ν•˜μœ„ν΄λž˜μŠ€μ—μ„œ 처리의 λ‚΄μš©μ„ κ΅¬μ²΄ν™”ν•˜λŠ” λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€.

-> PPTμ—μ„œ ν…œν”Œλ¦Ώμ„ λ°›κ³  ν•„μš”ν•œ λΆ€λΆ„λ§Œ λ‚΄μš©μ„ μ±„μš°λ©΄ λ˜λŠ” 상황을 μƒκ°ν•˜λ©΄ λœλ‹€!

<클래슀 ꡬ쑰도>

πŸ“– 02. Template Method μ‚¬μš© μ˜ˆμ‹œ

  • ν•˜λ‚˜μ˜ νŒŒμΌμ„ 읽어와, 사칙연산을 μˆ˜ν–‰ν•˜λŠ” μ½”λ“œλ₯Ό μ˜ˆμ‹œλ‘œ 보자.

01. Template Method μ‚¬μš© μ „

client.class

  • ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ νŒŒμΌμ„ 읽고, λ”ν•˜κΈ° 연산을 μˆ˜ν–‰ν•˜λŠ” process λ©”μ†Œλ“œλ₯Ό μ‹€ν–‰μ‹œμΌœ κ²°κ³Όλ₯Ό μ–»λŠ”λ‹€.

FileProcessor

  • txt 파일이 μžˆλ‹€κ³  κ°€μ •ν•˜κ³ , νŒŒμΌμ•ˆμ˜ 숫자λ₯Ό ν•˜λ‚˜μ”© λΆˆλŸ¬μ™€ + κΈ°λ₯Ό μ—°μ‚°ν•˜κ³  μžˆλ‹€.
    -> txt파일 (5 4 3 2 1) κ°€μ •!

-> 이것에 λŒ€ν•œ λ¬Έμ œμ μ€, λ§Œμ•½ -, x, % λ“±μ˜ 연산이 ν•΄λ‹Ή ν΄λž˜μŠ€μ— μΆ”κ°€λœλ‹€κ³  ν•˜μ˜€μ„ λ•Œ νŒŒμΌμ„ 뢈러였고 μ½μ–΄λ“€μ΄λŠ” 뢀뢄이 μ€‘λ³΅λœλ‹€.

μ΄λŸ¬ν•œ, 정해진 ν‹€ ν˜Ήμ€ 흐름을 고정적인 ν…œν”Œλ¦ΏμœΌλ‘œ 두고, λ³€κ²½λ˜λŠ” μ•Œκ³ λ¦¬μ¦˜(사칙연산) 의 κ΅¬ν˜„λ§Œμ„ ν•˜μœ„ ν΄λž˜μŠ€μ— λ§‘κ²¨λ²„λ¦¬λŠ”κ²Œ ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ νŒ¨ν„΄μ΄λ‹€.

02. Template Method μ‚¬μš© ν›„

  • μ‚¬μΉ™μ—°μ‚°μ˜ 뢀뢄을 좔상 λ©”μ†Œλ“œλ‘œ μΆ”μΆœ

FileProcessor

  • μ‚¬μΉ™μ—°μ‚°μ˜ λΆ€λΆ„λ§Œ abstract λ©”μ†Œλ“œλ‘œ μΆ”μΆœ

ν•˜μœ„ 클래슀

  • FileProcessorλ₯Ό 상속받아 abstract λ©”μ†Œλ“œ κ΅¬ν˜„!

Client

  • ν΄λΌμ΄μ–ΈνŠΈμ—μ„œλŠ” μ›ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•œ ν•˜μœ„ν΄λž˜μŠ€λ₯Ό ν˜ΈμΆœν•˜μ—¬ 결과값을 μ–»λŠ”λ‹€.

πŸ“– 03. Template Method μž₯단점

  • μž₯점
  1. ν…œν”Œλ¦Ώ μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•˜κ³  μ€‘λ³΅μ½”λ“œλ₯Ό 쀄일 수 μžˆλ‹€.
  2. ν…œν”Œλ¦Ώ μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³  상속을 λ°›μ•„μ„œ ꡬ체적인 μ•Œκ³ λ¦¬μ¦˜λ§Œ λ³€κ²½ν•  수 μžˆλ‹€.
  • 단점
    1.λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙을 μœ„λ°˜ν•  μˆ˜λ„ μžˆλ‹€.
    Β Β Β Β -> λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜μ›μΉ™μ΄λž€ - λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ μ›μΉ™μ˜ 핡심은 λΆ€λͺ¨ 클래슀의 행동 κ·œμ•½μ„ μžμ‹ ν΄λž˜μŠ€κ°€ μœ„λ°˜ν•˜λ©΄ μ•ˆ λœλ‹€.
    Β Β Β Β -> 상속을 λ°›μ€μˆœκ°„ ν•˜μœ„ν΄λž˜μŠ€κ°€ ν…œν”Œλ¦Ώμ„ μ •μ˜ν•œ λ©”μ†Œλ“œλ₯Ό 잘λͺ» μ˜€λ²„λΌμ΄λ”©ν•˜μ—¬ λΆ€λͺ¨μ˜ κ·œμ•½μ„ μœ„λ°˜ν•  κ°€λŠ₯성이 μžˆλ‹€.
    Β Β Β Β  -> μ‰½κ²Œ 말해 λΆ€λͺ¨ ν΄λž˜μŠ€μ—μ„œ μ•žμœΌλ‘œ κ°€μ•Όν•˜λŠ” μ—‘μ…€ λ©”μ†Œλ“œλ₯Ό κΈ°λŒ€ν–ˆλŠ”λ° ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ λ’€λ‘œ κ°€λ²„λ¦¬λŠ” μ—‘μ…€ λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν•΄μ„œλŠ” μ•ˆλœλ‹€λŠ” 말이닀!

    2.μ•Œκ³ λ¦¬μ¦˜ ꡬ쑰가 λ³΅μž‘ν•  수둝 ν…œν”Œλ¦Ώμ„ μœ μ§€ν•˜κΈ° μ–΄λ €μ›Œμ§„λ‹€.

πŸ“– 04. Template Method νŠΉμ§•

  • ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ 흐름이 μ§„ν–‰λ˜μ§€ μ•Šκ³  λͺ¨λ“  μ•Œκ³ λ¦¬μ¦˜μ˜ 흐름이 λΆ€λͺ¨ 클래슀둜 λ„˜μ–΄κ°€κ²Œ λœλ‹€.
    즉, μ œμ–΄μ˜ 역전이 μΌμ–΄λ‚¬μœΌλ©΄ 이λ₯Ό IOC(Inversion of Control) 이라 λ§ν•œλ‹€.




    참고 자료)
    https://thalals.tistory.com/435 - 힘차게, μ—΄μ‹¬νžˆ κ³΅λŒ€μƒ
profile
λ©ˆμΆ”μ§€ μ•ŠκΈ°
post-custom-banner

0개의 λŒ“κΈ€