Prototype Pattern

Prototype Pattern (ν”„λ‘œν† νƒ€μž… νŒ¨ν„΄)

거의 λ™μΌν•œ 객체λ₯Ό μ—¬λŸ¬ 개 μƒμ„±ν•˜κ³ μž ν•  λ•Œ, 이λ₯Ό 일일이 μƒμ„±ν•˜λŠ” 것은 λ‹€μŒκ³Ό 같은 문제λ₯Ό κ°–λŠ”λ‹€.

  • Clientκ°€ ꡬ체적인 것(μƒμ„±ν•˜κ³ μž ν•˜λŠ” ConcreteClass)에 μ ‘κ·Όν•˜κ²Œ λœλ‹€.

    • 이λ₯Ό μœ„ν•΄ ClientλŠ” λͺ¨λ“  ꡬ체적 ν΄λž˜μŠ€μ— λŒ€ν•΄ μ•Œκ³  μžˆμ–΄μ•Ό ν•˜λ©°, ꡬ체적 ν΄λž˜μŠ€κ°€ 좔가될 λ•œλ§ˆλ‹€ Client λ˜ν•œ μˆ˜μ •λ˜μ–΄μ•Ό ν•œλ‹€.

  • 객체의 νƒ€μž…μ΄ 컴파일 νƒ€μž„μ— κ²°μ •λœλ‹€.

    • 객체의 νƒ€μž…μ΄ μ •μ μœΌλ‘œ κ²°μ •λ˜λ―€λ‘œ μœ΅ν†΅μ„± 있게 μž‘λ™μ‹œν‚€κΈ° μ–΄λ ΅λ‹€.

μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄μ΄ λ°”λ‘œ ν”„λ‘œν† νƒ€μž… νŒ¨ν„΄(Prototype Pattern)이닀.

ν”„λ‘œν† νƒ€μž…μ€ λ‹€μŒκ³Ό 같이 λ™μž‘ν•œλ‹€.

  • 각 ꡬ체적 ν΄λž˜μŠ€κ°€ clone λ©”μ†Œλ“œλ₯Ό ν¬ν•¨ν•˜λŠ” Prototype μΈν„°νŽ˜μ΄μŠ€(λ˜λŠ” 좔상 클래슀)λ₯Ό κ΅¬ν˜„ν•˜λ„λ‘ ν•œλ‹€.

    • 즉, ꡬ체적 ν΄λž˜μŠ€μ—κ²Œ 자기 μžμ‹ μ„ λ³΅μ œν•  μ±…μž„μ„ λ§‘κΉ€μœΌλ‘œμ¨ Clientκ°€ ꡬ체적 클래슀λ₯Ό μ•Œμ§€ μ•Šμ•„λ„ λ³΅μ œν•  수 μžˆλ„λ‘ ν•œλ‹€.

  • 객체의 νƒ€μž…μ„ λŸ°νƒ€μž„μ— κ²°μ •ν•  수 μžˆλ„λ‘ ν•œλ‹€.

ꡬ성 μš”μ†Œ

Prototype-Pattern
  • Client - 좔상적인 객체만 μ°Έμ‘°ν•˜λ©° clone ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ 볡제된 객체λ₯Ό νšλ“ν•œλ‹€.

  • Prototype - 클둠 λ©”μ†Œλ“œκ°€ μ„ μ–Έλœ μΈν„°νŽ˜μ΄μŠ€ λ˜λŠ” 좔상 클래슀

  • ConcretePrototype - 자기 μžμ‹ μ„ λ³΅μ œν•˜λŠ” clone λ©”μ†Œλ“œλ₯Ό κ΅¬ν˜„ν•˜λŠ” 클래슀

νŠΉμ§•

  • clone은 μ΄λ¦„κ·œμΉ™μ΄κΈ° λ•Œλ¬Έμ— λ©”μ†Œλ“œλͺ…을 μž„μ˜λ‘œ λ³€κ²½ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹λ‹€. (λ³€κ²½ν•˜λ”λΌλ„ λ°˜λ“œμ‹œ λΉ„μŠ·ν•œ λ§₯락을 띄어 ν”„λ‘œν† νƒ€μž… νŒ¨ν„΄μ„ μ‚¬μš©ν–ˆμŒμ„ μ•Œ 수 μžˆλ„λ‘ ν•΄μ•Ό 함)

  • νŒ©ν† λ¦¬ λ©”μ†Œλ“œ νŒ¨ν„΄, 좔상 νŒ©ν† λ¦¬ νŒ¨ν„΄κ³Ό ν•¨κ»˜ μ‚¬μš©λ˜μ–΄ νŒ©ν† λ¦¬κ°€ 각 객체λ₯Ό λ³΅μ œν•˜μ—¬ μ œκ³΅ν•  수 μžˆλ„λ‘ ν•  μˆ˜λ„ μžˆλ‹€.

Last updated