μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- μ μ μ€λ λ
- μ΄μ§νμ
- DP
- κ·Έλν νμ
- μ μλ‘
- λΉλν¨ν΄
- springboot
- GC
- νκ³
- g1gc
- BFS
- λ§ν¬λ€μ΄
- λ°°μ΄ λ리기1
- deque
- Stack
- λͺ¬ν°ν
- κ·Έλννμ
- Python
- λ¬Έμ νμ΄
- github
- νλ‘μΈμ€
- ꡬν
- GarbageCollector
- Greedy
- λΈλ£¨νΈν¬μ€
- λ©΄μ 볡기
- 그리λ
- λΆν μ 볡
- λ°±μ€
- Markdown
- Today
- Total
FeelingXD
[DesignPattern] λΉλν¨ν΄ λ³Έλ¬Έ
λΉλ ν¨ν΄ π¨
λΉλν¨ν΄ μ λμμΈ ν¨ν΄μ€ μμ± ν¨ν΄μΌλ‘
μμ± κ³Όμ κ³Ό ννκ³Όμ μ λΆλ¦¬νκ³ λ€μν ꡬμ±μ
μΈμ€ν΄μ€
λ₯Ό λ§λλκ²μ λͺ©μ μΌλ‘ν©λλ€.
λΉλ ν¨ν΄μ κ°λ
λΉλ ν¨ν΄μ 볡μ‘ν κ°μ²΄λ€μ λ¨κ³λ³
λ‘ μμ± ν μμλλ‘ νλ ν¨ν΄μ
λλ€.
λνμ μΌλ‘ μ¬μ©λλ μμ± ν¨ν΄λ€
- μ μΈ΅μ μμ±μ ν¨ν΄
μμ±μλ₯Ό 맀κ°λ³μμ κ°μλ§νΌ ꡬμ±νλ ν¨ν΄μ μλ―Έν©λλ€.
class Person{ private String name; private String nickname; private String email; public Person(String name){ this(name,null,null); } public Person(String name, String nickname){ this(name,nickname,null) } public Person(String name, String nickname, String email){ this(name,nickname,email) } }
맀κ°λ³μκ° λ§μμ§μλ‘ κ·Έλ§νΌ 컀μ€ν μμ±μλ₯Ό μΆκ°μ μΌλ‘ μμ±ν΄μΌ ν©λλ€.
λ΄λΆνλμ λμΌν νμ μ ν΄λμ€κ° μ‘΄μ¬ν κ²½μ°
λͺ¨νΈ
ν ννμ μΌκΈ°ν μ μμ΅λλ€.
- μλ°λΉμ¦ ν¨ν΄
λ³λμ μμ±μ μμ΄ λΉ κ°μ²΄λ₯Ό μμ±νκ³ μΈμ€ν΄μ€μ νλλ₯Ό μ±μμ£Όλ ννμ ν¨ν΄μ λλ€.
μμ ν΄λμ€ μμ λ§λPerson
ν΄λμ€λ₯Ό μ¬νμ© νκ² μ΅λλ€.class Person{ private String name; // κΈ°ν νμ νλλ€ public Person() public setName(String name){ this.name= name; } // κ° νμν νλμ μΈν°λ€ }
class main{
public static void main(String args[]){
Person person= new Person()
person.setName("μλ‘μ΄ μ΄λ¦");
}
}
- λΆνμν μμ±μλ₯Ό μΆκ°μ μΌλ‘ μμ±νμ§ μμλ λμ΄μ μμ±ν μ½λ λμ΄ μ€μ΄λλλ€.
- `νμ` μ μΌλ‘ μ¬μ©λμΌνλ νλλ₯Ό κ°μ²΄ μμ± μ΄ν μ΄κΈ°ν νκΈ°μ μ€μ ν μ μμ΅λλ€.
- νλμ setμ΄ μ΄λ €μμ΄ κ°μ²΄ νλκ° λ³ν μ μμ΅λλ€.
### λΉλν¨ν΄ μμ보기 π
```Java
class Person{
private String name;
private String nickname;
// private μμ±μλ₯Ό μ§μ νμ¬ μμ±μ μμ± λ°©μ§
private Person(){}
public static builder(){
return new PersonBuilder()
}
}
// μμ±μ λΉλν¨ν΄μμ λ΄λΉνκ²λ©λλ€.
class PersonBuilder{
public PersonBuilder name(String name){
this.name= name;
return this
}
public PersonBuilder nickname(String nickname){
this.nickname= nickname
return this
}
public Person build(PersonBuilder builder){
Person person = new Person()
// κ° person νλμ€μ
person.name = builder.name
return person
}
// μ΅μ’
μ μΌλ‘ build λ©μλλ₯Ό ν΅ν΄ Personκ°μ²΄λ₯Ό μμ±ν©λλ€.
public Person build(){
return build(this)
}
}
μ€μ μ¬μ©νλ κ³³μμλ λ€μκ³Ό κ°μ΄ μ¬μ©λλ€.
public static void main(){
Person person = Person.Builder()
.name("μ΄λ¦")
.build()
}
λΉλν¨ν΄μ μ₯μ
- λͺ μμ μΌλ‘ μ΄λ€νλμ μ΄λ€ κ°μ΄ λ€μ΄κ°μ§ κ°λ°μκ° νμ νκΈ° μ©μ΄ν©λλ€.
- μ€μ μ¬μ©νλ κ°μ²΄μμ Setterμ μμ±μλ₯Ό μ¬μ©νμ§ μμΌλ―λ‘μ¨ κ°μ²΄κ° λ³κ²½λκ±°λ μμ±μ μ€μκ° μ€μ΄λλλ€.
λ¨μ
- νμκ°μΌλ‘ μμ±ν΄μΌνλ νλλ€μ λλ½ν μνμ΄ μμ΅λλ€.