본문 바로가기
Java/Design Pattern

[Java] 빌더 패턴 (Builder pattern)

by 스응 2023. 3. 23.
728x90
728x90

빌더 패턴 (Builder pattern)

  - 객체를 생성하는 클래스와 객체를 표현하는 클래스를 분리하는 디자인 패턴

  - '생성' 디자인 패턴

  - 생성자의 매개변수로 값을 받아 멤버 변수에 대입할 때에는 실수가 발생할 수 있음

    (매개변수가 많을수록 포지셔널을 지키기 어려워짐)

      → Builder 패턴은 set 메서드의 대상이 되는 멤버 변수 이름이 명확하게 제시되므로, 실수 방지

 

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
38
39
40
41
42
43
44
// 예시
 
// 외부 클래스
public class Todo {
 
    private String content;
    private int complete;
 
    // 기본 생성자를 private 접근 제어자로 재정의
    private Todo() {}
 
    // 정적 내부 클래스
    public static class TodoBuilder {
 
        // 외부 클래스와 동일한 구성으로 멤버 변수 선언
        private String content;
        private int complete;
 
        // 내부 클래스를 반환하는 set 메서드 정의
        public TodoBuilder setContent(String content) {
            this.content = content;
            return this;
        }
 
        public TodoBuilder setComplete(int complete) {
            this.complete = complete;
            return this;
        }
 
        // 외부 클래스를 생성하는 메서드
        public Todo build() {
            Todo todo = new Todo();
            // todo 객체에 TodoBuilder 클래스의 멤버변수를 대입함
            todo.content = content;
            todo.complete = complete;
            return todo;
        }
    } // end of Builder Class
// end of Outer Class
 
----------------------------------
 
// main
    Todo todo = new MyBuilder().setComplete(값).setContent(값).build();
cs
320x100
반응형

댓글