[Java] 빌더 패턴 (Builder pattern)

2023. 3. 23. 17:39·Java/Design Pattern
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
반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Design Pattern' 카테고리의 다른 글

[Java] 전략 패턴 (Strategy pattern)  (0) 2023.04.11
[Java] 싱글톤 패턴 (Singleton pattern)  (0) 2023.04.10
[Java] 어댑터 패턴 (Adapter pattern)  (0) 2023.03.27
[Java] 디자인 패턴 정리  (0) 2023.03.27
[Java] 템플릿 메서드 패턴 (Template Method pattern)  (0) 2023.02.11
'Java/Design Pattern' 카테고리의 다른 글
  • [Java] 싱글톤 패턴 (Singleton pattern)
  • [Java] 어댑터 패턴 (Adapter pattern)
  • [Java] 디자인 패턴 정리
  • [Java] 템플릿 메서드 패턴 (Template Method pattern)
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (384) N
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (16) N
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    git
    오블완
    zapier
    Swing
    Android
    jsp
    tailwindcss
    Wordpress
    CSS
    jQuery
    php
    SEO
    Codeigniter
    면접
    errorNote
    HTML
    Hotkeys
    cs
    개발일지
    java
    C#
    SQL
    vuejs
    http
    typeScript
    SWAGGER
    티스토리챌린지
    js
    SpringBoot
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[Java] 빌더 패턴 (Builder pattern)
상단으로

티스토리툴바