빌더 패턴

2022. 12. 19. 23:51· 디자인패턴
  • 구조를 가지고 있는 큰 것을 구축한다
  • 복잡한 구조를 가지는 것을 한번에 완성하는 것은 어렵다
  • 구조를 이루는 각 부품을 하나씩 만들어 가는 방법

 

장점

  • 코드 읽기 / 유지보수가 편하다
  • 객체 생성을 깔끔하게 할 수 있다
public class Text {
    private String text;

    private Text() {}

    @Override
    public String toString() {
        return text;
    }

    public static class Builder{
        private String title;
        private String content;
        private String [] items;

        public Builder setTitle(String title){
            this.title = title;
            return this;
        }

        public Builder setContent(String content){
            this.content = content;
            return this;
        }

        public Builder setItems(String... items){
            this.items = items;
            return this;
        }

        public Text build(){
            Text text = new Text();

            StringBuilder sb = new StringBuilder();
            sb.append("타이틀 : ").append(title).append("\n");
            sb.append("내용 : ").append(content).append("\n");
            sb.append("항목 : ").append("\n");

            for(String item : items){
                sb.append("-").append(item).append("\n");
            }
            text.text = sb.toString();
            return text;
        }
    }
}
public class Main {
    public static void main(String[] args) {
        Text text = new Text.Builder()
                .setTitle("안녕")
                .setContent("내용")
                .setItems("항목1", "항목2", "항목3")
                .build();

        System.out.println(text);
    }
}
  • 만약 빌더 패턴을 사용하지 않으면? 
  • 생성자 조합의 경우의 수를 모두 만들어줘야 하는 일이 생길 것이다.
  • 아래처럼?
public class Text {
    private String text;
    private String title;
    private String content;
    private String [] items;


    public Text(String title, String content) {
        this.title = title;
        this.content = content;
    }

    public Text(String title, String content, String[] items) {
        this.title = title;
        this.content = content;
        this.items = items;
    }

    public Text(String content, String[] items) {
        this.content = content;
        this.items = items;
    }

    public Text(String[] items) {
        this.items = items;
    }
    
        

    @Override
    public String toString() {
        return text;
    }
}

'디자인패턴' 카테고리의 다른 글

어댑터 패턴  (0) 2022.12.21
싱글톤 패턴  (0) 2022.12.21
팩토리 메서드 패턴  (0) 2022.12.20
'디자인패턴' 카테고리의 다른 글
  • 어댑터 패턴
  • 싱글톤 패턴
  • 팩토리 메서드 패턴
솜사탕코튼
솜사탕코튼
솜사탕코튼
개발일기
솜사탕코튼
전체
오늘
어제
  • 분류 전체보기 (236)
    • Spring관련 기술 (43)
      • Spring (2)
      • 서버개발 (10)
      • JPA (9)
      • 테스트코드 (22)
      • 인증, 인가 (0)
    • DB관련 (19)
      • 오라클 (1)
      • MySQL (0)
      • 기타 DB (4)
      • DB관련 이슈 (2)
      • REDIS (11)
      • db migration (1)
    • 프로그래밍 언어 (3)
      • 자바 (3)
    • 파이썬 관련 (19)
      • 파이썬 (16)
      • 데이터 사이언스 (3)
    • 네트워크 관련 (4)
      • 네트워크 (4)
    • 배포관련 (32)
      • AWS (26)
      • 도커 (5)
      • 클라우드 정리 (1)
    • 자료구조 & 알고리즘 관련 (53)
      • 자료구조&알고리즘 (6)
      • 코딩테스트 (40)
      • 99클럽 코딩테스트 스터디 6기 (7)
    • CS지식들 (30)
      • 공부공부 (13)
      • CS (17)
    • 프로젝트 (4)
    • 에러일기 (18)
    • 서적 (3)
      • 밑바닥부터 만드는 컴퓨팅 시스템 (3)
    • 깃 & 깃헙 (1)
    • 디자인패턴 (4)
    • 면접질문 (0)
    • kt-aivle (0)
    • 덕질일지 (2)
    • 영어공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BFS
  • 99클럽
  • 파이썬
  • 이것이 코딩테스트다
  • 인프런
  • 10주 완성 알고리즘 코딩테스트
  • dfs
  • Redis
  • 코테
  • 프로그래머스
  • 스프링 부트 - 핵심 원리와 활용
  • AWS
  • queryDSL
  • 따라하며 배우는 AWS 네트워크 입문
  • 나동빈
  • 그래프순회
  • 따라하며 배우는 AWS
  • 백준
  • Practical Testing: 실용적인 테스트 가이드
  • 자바

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
솜사탕코튼
빌더 패턴
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.