[java/pattern] builder pattern 빌더 패턴

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
31
32
33
34
35
36
37
public class Animal {
    private int age;
    private String name;
    
    public Animal(Builder builder) {
        this.age = builder.age;
        this.name = builder.name;
    }
    
    public static class Builder {
        private int age = 0;
        private String name = "";
        
        public Builder setName(String name) {
            this.name = name;
            return this;
        }
        
        public Builder setAge(int age) {
            this.age = age;
            return this;
        }
        
        public Animal build() {
            return new Animal(this);
        }
    }
    
    public static void main(String[] args) {
        Animal animal = new Animal.Builder().setAge(10).setName("test").build();
        System.out.println(animal.toString());
    }
    
    public String toString() {
        return "age: " + age + " name:" + name; 
    }
}
cs


장점

- 객체생성시 명확하다. 

- 생성자를 여러개 생성하지 않아도 된다. 


단점 

- 객체 일관성이 깨짐

- 멀티 스레드 프로그램에서 사용시 유의해야함