Coding Planet
[μ΄νν°λΈ μλ°]chapter2 : [μμ΄ν 2] μμ±μμ 맀κ°λ³μκ° λ§λ€λ©΄ λΉλλ₯Ό κ³ λ €νλΌ λ³Έλ¬Έ
π» Java Study/Java μ΄λ‘ μ 리
[μ΄νν°λΈ μλ°]chapter2 : [μμ΄ν 2] μμ±μμ 맀κ°λ³μκ° λ§λ€λ©΄ λΉλλ₯Ό κ³ λ €νλΌ
jhj.sharon 2023. 8. 6. 14:42λ°μν
μμ΄ν 2 : μμ±μμ 맀κ°λ³μκ° λ§λ€λ©΄ λΉλλ₯Ό κ³ λ €νλΌ
μ μ ν©ν 리μ μμ±μμλ λκ°μ μ μ½μ΄ νλ μλ€. μ νμ 맀κ°λ³μκ° λ§μ κ²½μ° μ μ ν λμνκΈ°κ° μ΄λ ΅λ€λ κ²μ΄λ€. κΈ°μ‘΄μ 맀κ°λ³μκ° λ§μ κ²½μ° κ³ λ €ν μ μλ λ°©μμ λ€μκ³Ό κ°λ€.
λμ1. μ μΈ΅μ μμ±μ ν¨ν΄
- μ μΈ΅μ μμ±μ ν¨ν΄(telescoping constructor pattern)μ΄λ κ°μ²΄ μμ± μ νμν μ‘°ν©μ λ°λΌ λ€μν μμ±μλ₯Ό μ 곡νλ κ²μ μλ―Ένλ€.
- νμ 맀κ°λ³μλ₯Ό λ°λμμ±μλ₯Ό λ¨Όμ μμ±νκ³ λ§€κ°λ³μ 1κ°λ₯Ό μΆκ°λ‘ λ°λ μμ±μ, μ ν λ§€κ° λ³μ 2κ°λ₯Ό μΆκ°λ‘ λ°λ μμ±μ λ±μ ννλ‘ λ§€κ°λ³μ κ°μλ§νΌ μμ±μλ₯Ό λλ €κ°λ λ°©μμ΄λ€.
- μ΄ ν¨ν΄μ μ£Όμν λ¬Έμ λ μ νμ 맀κ°λ³μμ μκ° λ§μμ§μλ‘ μμ±μμ μκ° κΈ°νκΈμμ μΌλ‘ λμ΄λκ² λλ©°, ν΄λΌμ΄μΈνΈ μ½λμμ μ΄λ€ μμ±μλ₯Ό νΈμΆν΄μΌ ν μ§ νΌλμ€λ¬μΈ μ μλ€.
- ν΄λμ€μ μμ±μλ₯Ό νΈμΆνλ μ μ₯μμ ν΄λΉ 맀κ°λ³μκ° λ§λμ§, 맀κ°λ³μμ κ°μλ μ λλ‘ μ λ ₯ν κ²μΈμ§ νμΈν΄μΌ νλ λΆνΈν¨μ΄ μλ€.
λμ2. μλ° λΉμ¦ ν¨ν΄
- μλ° λΉμ¦ ν¨ν΄μ κ°μ²΄ μμ± λ° μ΄κΈ°νλ₯Ό μν νλ‘κ·Έλλ° λͺ¨λΈμ΄λ€. 맀κ°λ³μκ° μλ μμ±μλ‘ κ°μ²΄λ₯Ό λ§λ ν, setter λ©μλλ€μ νΈμΆν΄ μνλ 맀κ°λ³μμ κ°μ μ€μ νλ λ°©μμ΄λ€.
- μ΄ λ°©μμ ν΅ν΄ μ μΈ΅μ μμ±μ ν¨ν΄μ λ¬Έμ μΈ μ½λμμ± ν¨μ¨, κ°λ μ± μ ν λ¬Έμ λ₯Ό ν΄κ²°νλ€.
- νμ§λ§ κ°μ²΄ νλλ₯Ό λ§λλ €λ©΄ λ©μλλ₯Ό μ¬λ¬ κ° νΈμΆν΄μΌ νκ³ , κ°μ²΄κ° μμ ν μμ±λκΈ° μ κΉμ§λ μΌκ΄μ±(Consistency)μ΄ λ¬΄λμ§ μνμ λμ΄κ² λλ€.
- μ¦, κ°μ²΄κ° λΆλ³(immutable)μ΄ μλκΈ° λλ¬Έμ μ€λ λ μμ μ± λ¬Έμ κ° λ°μνλ κ²μ΄λ€. λ§μ°¬κ°μ§λ‘ Setterλ₯Ό ν΅ν΄μ κ°μ μ£Όμ λ°κΈ° λλ¬Έμ finalμ μ¬μ©ν μ μλ€.
λμ3. :gem: λΉλ ν¨ν΄(Builder Pattern)
- μ μΈ΅μ μμ±μ ν¨ν΄μ μμ μ±κ³Ό μλ°λΉμ¦ ν¨ν΄μ κ°λ μ±μ κ²ΈλΉν λΉλ ν¨ν΄
- ν΄λΌμ΄μΈνΈλ νμν κ°μ²΄λ₯Ό μ§μ λ§λλ λμ , νμ 맀κ°λ³μλ§μΌλ‘ μμ±μ νΉμ μ μ ν©ν 리λ₯Ό νΈμΆν΄ λΉλ κ°μ²΄λ₯Ό μ»λλ€.
- μ΄λ₯Ό ν΅ν΄ λΆλ³μμ μ μ©ν μ μλ€.
- κ·Έλ° λ€μ λΉλ κ°μ²΄κ° μ 곡νλ Setter λ©μλλ€λ‘ μνλ μ ν 맀κ°λ³μλ€μ μ€μ νλ€.
- μ¬λ¬ κ°μ κ°λ³ μΈμλ₯Ό λ°μ μ μλ€.
- λ§μ§λ§μΌλ‘ 맀κ°λ³μκ° μλ build λ©μλλ₯Ό νΈμΆν΄ κ°μ²΄λ₯Ό μ»λλ€.
- λΉλμ setter λ©μλλ€μ λΉλ μμ μ λ°ννκΈ° λλ¬Έμ μ°μμ μΌλ‘ νΈμΆν μ μλ€(method chaining).
- λΉλ ν¨ν΄μ νμ
- ν΄λμ€μ νμ μμ±λ€μ final λΆλ³ μ μΈνλ€.
- μ μ λ΄λΆ ν΄λμ€λ‘ λΉλλΌλ ν΄λμ€λ₯Ό μ μνμ¬ κ°μ²΄ μμ±μ μμνλ€.
- λΉλ ν΄λμ€λ λΉλκ° λ§λλ κ°μ²΄ ν΄λμ€μ μ μ λ©€λ² ν΄λμ€λ‘ μ μνλ€.
(β´β‘`β)λΉλ ν¨ν΄μ κ³μΈ΅μ μΌλ‘ μ€κ³λ ν΄λμ€μ ν¨κ» μ¬μ©ν λ νΉν μ μ©νλ€. κ³μΈ΅μ μΌλ‘ μ€κ³λ ν΄λμ€λ μ’ μ’ λ³΅μ‘ν μμ±μλ₯Ό κ°μ§λ©°, κ° κ³μΈ΅μ μλΈ ν΄λμ€κ° μΆκ°λ λλ§λ€ μ΄ μμ±μλ€μ΄ λ 볡μ‘ν΄μ§ μ μλ€. μ΄λ¬ν 볡μ‘μ±μ κ΄λ¦¬νκΈ° μν΄ λΉλ ν¨ν΄μ μ¬μ©νλ©΄, ν΄λΌμ΄μΈνΈ μ½λκ° ν¨μ¬ κΉλνκ³ μ½κΈ° μ¬μμ§λ€.
κ²°λ‘ μ μΌλ‘ μμ±μλ μ μ ν©ν λ¦¬κ° μ²λ¦¬ν΄μΌ ν 맀κ°λ³μκ° λ§λ€λ©΄ λΉλ ν¨ν΄μ μ ννλκ² λ λ«λ€. 맀κ°λ³μ μ€ λ€μκ° νμκ° μλκ±°λ κ°μ νμ μ΄λ©΄ νΉν λ κ·Έλ¬λ€. λΉλλ μ μΈ΅μ μμ±μλ³΄λ€ ν΄λΌμ΄μΈνΈ μ½λλ₯Ό μ½κ³ μ°κΈ°κ° ν¨μ¬ κ°κ²°νκ³ μλ° λΉμ¦λ³΄λ€ ν¨μ¬ μμ νλ€. |
λ°μν
'π» Java Study > Java μ΄λ‘ μ 리' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Comments