Skip to content

Latest commit

Β 

History

History
32 lines (25 loc) Β· 1.98 KB

File metadata and controls

32 lines (25 loc) Β· 1.98 KB

Template Method Pattern

TemplateMethod

  • μ–΄λ–€ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 일뢀뢄을 μ„œλΈŒ 클래슀둜 μΊ‘μŠν™”ν•΄ 전체 일을 μˆ˜ν–‰ν•˜λŠ” κ΅¬μ‘°λŠ” λ°”κΎΈμ§€ μ•ŠμœΌλ©΄μ„œ νŠΉμ • λ‹¨κ³„μ—μ„œ μˆ˜ν–‰ν•˜λŠ” 내역을 λ°”κΎΈλŠ” νŒ¨ν„΄μ΄λ‹€.
  • λ™μΌν•œ κΈ°λŠ₯을 μƒμœ„ ν΄λž˜μŠ€μ—μ„œ μ •μ˜ν•˜λ©΄μ„œ ν™•μž₯/λ³€ν™”κ°€ ν•„μš”ν•œ λΆ€λΆ„λ§Œ μ„œλΈŒ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ν•  수 μžˆλ„λ‘ ν•œλ‹€.

κ΄€λ ¨ μš©μ–΄

AbstractClass

  • ν…œν”Œλ¦Ώ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•˜λŠ” 클래슀
  • ν•˜μœ„ ν΄λž˜μŠ€μ— 곡톡 μ•Œκ³ λ¦¬μ¦˜μ„ μ •μ˜ν•˜κ³  ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„λ  κΈ°λŠ₯을 ν›… λ©”μ†Œλ“œλ‘œ μ •μ˜ν•˜λŠ” 클래슀

ConcreteClass

  • 물렀받은 ν›… λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν•˜λŠ” 클래슀
  • μƒμœ„ ν΄λž˜μŠ€μ— κ΅¬ν˜„λœ ν…œν”Œλ¦Ώ λ©”μ†Œλ“œμ˜ 일반적인 μ•Œκ³ λ¦¬μ¦˜μ—μ„œ ν•˜μœ„ ν΄λž˜μŠ€μ— μ ν•©ν•˜κ²Œ ν›… λ©”μ†Œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ“œν•˜λŠ” 클래슀

νŠΉμ§•

  • μ „μ²΄μ μœΌλ‘œλŠ” λ™μΌν•˜μ§€λ§Œ λΆ€λΆ„μ μœΌλ‘œλŠ” λ‹€λ₯Έ ꡬ문으둜 κ΅¬μ„±λœ ν•¨μˆ˜μ˜ μ½”λ“œ 쀑볡을 μ΅œμ†Œν™” ν•  λ•Œ μœ μš©ν•˜λ‹€.
  • 좔상 λ©”μ†Œλ“œμ™€ ν›… λ©”μ†Œλ“œλ₯Ό 적절히 μ‚¬μš©ν•΄μ„œ 전체적인 λΌˆλŒ€λ₯Ό μœ μ§€ν•˜λ©΄μ„œ μœ μ—°ν•˜κ²Œ κΈ°λŠ₯을 λ³€κ²½ν•  수 μžˆλ„λ‘ ν•˜κ³ μž ν• λ•Œ μœ μš©ν•˜λ‹€.
  • 전체적인 μ•Œκ³ λ¦¬μ¦˜μ€ μƒμœ„ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ν•˜λ©΄μ„œ λ‹€λ₯Έ 뢀뢄은 ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ν•  수 μžˆλ„λ‘ ν•¨μœΌλ‘œμ¨ 전체적인 μ•Œκ³ λ¦¬μ¦˜ μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•˜λŠ” 데 μœ μš©ν•˜λ‹€.
  • μƒμœ„ ν΄λž˜μŠ€ν˜•μ˜ λ³€μˆ˜μ— ν•˜μœ„ 클래슀의 μ–΄λ– ν•œ μΈμŠ€ν„΄μŠ€λ₯Ό 넣어도 μž‘λ™ν•˜λŠ” LSP 원칙에 λΆ€ν•©ν•œλ‹€.

μž₯점

  • μ½”λ“œμ˜ 쀑볡을 μ œκ±°ν•  수 μžˆλ‹€.
  • μžμ‹ 클래슀의 역할을 κ°μ†Œμ‹œν‚€λ©΄μ„œ 핡심 둜직 관리에 μš©μ΄ν•˜λ‹€.
  • 객체 μΆ”κ°€ 및 ν™•μž₯을 μ‰½κ²Œ ν•  수 μžˆλ‹€.

단점

  • 좔상 λ©”μ†Œλ“œκ°€ λ„ˆλ¬΄ λ§Žμ•„μ§€λ©΄ 클래슀 관리가 νž˜λ“€μ–΄μ§„λ‹€.
  • 좔상 ν΄λž˜μŠ€μ™€ κ΅¬ν˜„ ν΄λž˜μŠ€κ°„ λ³΅μž‘μ„±μ΄ 컀진닀.

예제