Prototype Pattern
Prototype Pattern (νλ‘ν νμ
ν¨ν΄)
κ±°μ λμΌν κ°μ²΄λ₯Ό μ¬λ¬ κ° μμ±νκ³ μ ν λ, μ΄λ₯Ό μΌμΌμ΄ μμ±νλ κ²μ λ€μκ³Ό κ°μ λ¬Έμ λ₯Ό κ°λλ€.
Clientκ° κ΅¬μ²΄μ μΈ κ²(μμ±νκ³ μ νλ ConcreteClass)μ μ κ·Όνκ² λλ€.
μ΄λ₯Ό μν΄ Clientλ λͺ¨λ ꡬ체μ ν΄λμ€μ λν΄ μκ³ μμ΄μΌ νλ©°, ꡬ체μ ν΄λμ€κ° μΆκ°λ λλ§λ€ Client λν μμ λμ΄μΌ νλ€.
κ°μ²΄μ νμ μ΄ μ»΄νμΌ νμμ κ²°μ λλ€.
κ°μ²΄μ νμ μ΄ μ μ μΌλ‘ κ²°μ λλ―λ‘ μ΅ν΅μ± μκ² μλμν€κΈ° μ΄λ ΅λ€.
μ΄λ¬ν λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ μ¬μ©νλ ν¨ν΄μ΄ λ°λ‘ νλ‘ν νμ ν¨ν΄(Prototype Pattern)μ΄λ€.
νλ‘ν νμ μ λ€μκ³Ό κ°μ΄ λμνλ€.
κ° κ΅¬μ²΄μ ν΄λμ€κ° clone λ©μλλ₯Ό ν¬ν¨νλ Prototype μΈν°νμ΄μ€(λλ μΆμ ν΄λμ€)λ₯Ό ꡬννλλ‘ νλ€.
μ¦, ꡬ체μ ν΄λμ€μκ² μκΈ° μμ μ 볡μ ν μ± μμ λ§‘κΉμΌλ‘μ¨ Clientκ° κ΅¬μ²΄μ ν΄λμ€λ₯Ό μμ§ μμλ 볡μ ν μ μλλ‘ νλ€.
κ°μ²΄μ νμ μ λ°νμμ κ²°μ ν μ μλλ‘ νλ€.
κ΅¬μ± μμ

Client
- μΆμμ μΈ κ°μ²΄λ§ μ°Έμ‘°νλ©° clone ν¨μλ₯Ό μ΄μ©ν΄ 볡μ λ κ°μ²΄λ₯Ό νλνλ€.Prototype
- ν΄λ‘ λ©μλκ° μ μΈλ μΈν°νμ΄μ€ λλ μΆμ ν΄λμ€ConcretePrototype
- μκΈ° μμ μ 볡μ νλ clone λ©μλλ₯Ό ꡬννλ ν΄λμ€
νΉμ§
cloneμ μ΄λ¦κ·μΉμ΄κΈ° λλ¬Έμ λ©μλλͺ μ μμλ‘ λ³κ²½νμ§ μλ κ²μ΄ μ’λ€. (λ³κ²½νλλΌλ λ°λμ λΉμ·ν λ§₯λ½μ λμ΄ νλ‘ν νμ ν¨ν΄μ μ¬μ©νμμ μ μ μλλ‘ ν΄μΌ ν¨)
ν©ν 리 λ©μλ ν¨ν΄, μΆμ ν©ν 리 ν¨ν΄κ³Ό ν¨κ» μ¬μ©λμ΄ ν©ν λ¦¬κ° κ° κ°μ²΄λ₯Ό 볡μ νμ¬ μ 곡ν μ μλλ‘ ν μλ μλ€.
Last updated