Last updated
Last updated
μΌλ°μ μΌλ‘ κ°μ²΄λ₯Ό μμ±ν λμλ μμ±μ(constructor)κ° μ 곡λλ©° new λ¬Έλ²μ ν΅ν΄ μμ±μλ₯Ό μ΄μ©νλ€.
κ·Έλ¬λ κ°μ²΄μ λ무 λ§μ μμ±μκ° μ μΈλλ©΄ κ°μ²΄ λ΄λΆμ μλ κ°μ²΄ μμ± λ‘μ§μ΄ κΈΈμ΄μ Έ μ½λκ° μ§μ λΆν΄μ§κ³ , μ± μμ΄ λΆλ¦¬λμ§ μλλ€.
λν, κΈ°μ‘΄ λ°©μμ κ°μ₯ μΉλͺ μ μΈ λ¬Έμ μ μ, λͺ¨λ λ°μ΄ν°κ° ν λ²μ μ€λΉλμ§ μμ μΌλΆ λ°μ΄ν°λ§ μ 곡λ μνλ‘ κ°μ²΄λ₯Ό μμ±ν λ ν΄λΉ μμ± κ³Όμ μ΄ μ ν¨νμ§ νλ¨νλ λ‘μ§μ΄ μλ€λ κ²μ΄λ€.
μ΄λ¬ν κΈ°μ‘΄ μμ±μμ λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ μ¬μ©νλ κ²μ΄ λΉλ ν¨ν΄
μ΄λ€.
Director
- Builderλ₯Ό μ΄μ©ν΄ Productλ₯Ό μμ±νλ ν΄λμ€
Builder
- Builderμ λ€νμ±μ μ μ©νκΈ° μν μΈν°νμ΄μ€ (Builderκ° νλ λΏμ΄λΌλ©΄ μλ΅ κ°λ₯)
ConcreteBuilder
- λ§λ€κ³ μ νλ κ°μ²΄(Product)μ λν΄ μ μ¦μ μΌλ‘ κ°μ λ°κ³ μ΄λ₯Ό μμ±νμ¬ λ°ννλ ν΄λμ€
Product
- Builderκ° λ§λ€μ΄λ΄λ(λ°ννλ) κ²°κ³Όλ¬Ό
Builder ν΄λμ€λ Javaμμλ μ£Όλ‘ public static class
λ‘ μ μΈλλ€.
νμν λ°μ΄ν°λ₯Ό λ°λ λ©μλλ€μ λ€μκ³Ό κ°μ΄ ꡬνλλ€.
μ΄λ λ€μκ³Ό κ°μ΄ 체μΈμ μ΄μ΄κ° μ μ¦μ μΌλ‘ λ°μ΄ν°λ₯Ό μ±μλκ°κΈ° μν¨μ΄λ€.
Productλ₯Ό μμ±νλ λ©μλ build
λ λ€μκ³Ό κ°μ΄ ꡬνλλ€.
μ μ΄λ κ² μλνλ κ²μ΄ κ°λ₯νκ°? μ΄λ Product ν΄λμ€μμ λ€μκ³Ό κ°μ νλΌμ΄λΉ μμ±μλ₯Ό ꡬννκΈ° λλ¬Έμ΄λ€.
μ΄λ μΈλΆμμ νΈμΆν μλ μμΌλ Productμ inner classμΈ Builderμμλ νΈμΆν μ μλ€.
λ°λΌμ Builderμ μ¬μ©μλ μ§μ Productλ₯Ό μμ±ν μλ μκ³ Builderλ₯Ό ν΅ν΄ Productλ₯Ό μμ±νλ κ²μ΄λ€.