Builder Pattern
μλ°μμ κ°μ²΄λ₯Ό μ μνμ¬ μμ±ν λ λ³΄ν΅ μμ±μλ₯Ό ν΅ν΄ κ°μ μ£Όμ νμ¬ μμ±νλ€.
Person hae = new Person("ν΄μ", 27, "κ°λ°μ");
μ΄λ κ² μμ±μλ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό μμ±νλ λ°©λ²μ λ¨μ μ΄ μλ€.
1. κ°μ μ€μ μμκ° μλ€.
μμ±μμ κ²½μ°μλ μ ν΄μ§ νλΌλ―Έν°μ μμλλ‘ κ°μ λ£μ΄μ€μΌνλ€. μμλ₯Ό 무μνκ³ λ£κ²λλ©΄ λ€λ₯Έ λ³μμ λ€λ₯Έ κ°μ΄ ν λΉλλ λν¨κ° μκΈ΄λ€.
μ΄μλ°ν΄ λΉλν¨ν΄μμλ νλ μ΄λ¦μΌλ‘ κ°μ μ€μ νμ¬, μμμ μ’ μλμ§μλλ€. μ΄λ€ νλλ₯Ό λ¨Όμ μ€μ ν΄μΌνλμ§ μκ°ν νμμμ΄ νΈνκ² λμ΄νλ©΄λλ€.
2. μμ±μμ νλΌλ―Έν°κ° λ§μΌλ©΄ κ°λ μ±μ΄ λ¨μ΄μ§λ€.
μμμμ μ²λΌ 3κ°μ§μ νλΌλ―Έν°λ§ λ°λ κ²½μ°μλ ν¬κ² κ°λ μ±μ λ¬Έμ κ° μμκ²μ΄λ€. νμ§λ§ 10κ°μ§ μ 보λ₯Ό λ°λλ€κ³ μκ°ν΄λ³΄λ©΄...? μμ±νλ©΄μ λΆν° λ¨Έλ¦¬κ° μνκ²κ°λ€.
Person hae = new Person("ν΄μ", 27, "κ°λ°μ", "java", "python", "spring", "blog" ...);
μ΄λ° μν©μμ λΉλν¨ν΄μΌλ‘ ꡬνμ νκ² λλ©΄ λΉλμ κ° κ°λ€μ λ£μ΄μ€λ, κ°μ΄ μ΄λ€ μλ―Έλ₯Ό λ»νλμ§ νμ νκΈ° μ©μ΄νκ³ , μμ±μλ‘ μ€μ ν΄μΌνλ κ°μ΄ λ§μκ²½μ° (IDEκ° λμμ£ΌκΈ΄νμ§λ§...) λΉλλ₯Ό μ°λ κ²μ΄ κ°λ μ± μΈ‘λ©΄μμ ν¨μ¬ μ’λ€.
Person hae = Person.builder()
.name("ν΄μ")
.age(27)
.job("κ°λ°μ")
.lang1("java")
.lang2("python")
.framework("spring")
.profile("blog")
...
.build();
λν κ°μ νμ μ λ€λ₯Έ λ³μμ κ°μ μλ‘ λ°κΏλ£λκ²λ λ°©μ§ν μμλ€.