[디자인패턴] - 빌더 패턴(Builder Pattern)

2025. 1. 16. 09:53·디자인 패턴

빌더 패턴(Builder Pattern)

빌더 패턴(Builder Pattern)은 객체 생성의 복잡성을 줄이고, 다양한 표현 방식을 제공하는 생성 패턴(Creational Pattern) 중 하나입니다. 이 패턴은 객체를 생성하는 과정과 그 객체의 표현 방식을 분리하여 동일한 생성 절차에서 서로 다른 객체를 생성할 수 있도록 합니다.


특징

  1. 복잡한 객체 생성
    복잡한 객체를 생성할 때, 생성 과정이 복잡하거나 여러 단계로 나뉘어 있다면 빌더 패턴이 유용합니다.
  2. 객체 생성과 표현의 분리
    빌더 패턴은 객체를 생성하는 코드와 객체의 구체적인 표현(구조나 내용)을 분리합니다. 이를 통해 재사용성과 유지보수성을 높일 수 있습니다.

구성 요소

  1. Builder (빌더 인터페이스)
    • 객체 생성에 필요한 단계를 정의하는 인터페이스입니다.
    • 각 단계별로 메서드를 정의합니다.
  2. ConcreteBuilder (구체적인 빌더)
    • Builder 인터페이스를 구현하며, 각 단계별로 실제 작업을 수행합니다.
    • 최종적으로 생성된 객체를 반환하는 메서드를 제공합니다.
  3. Director (디렉터)
    • Builder를 사용하는 주체로, 객체 생성의 순서를 정의합니다.
    • 복잡한 생성 논리를 캡슐화하여 Builder에 위임합니다.
  4. Product (생성될 객체)
    • 최종적으로 생성되는 복잡한 객체입니다.

 

// 생성, 구조, 행위

// 빌더 패턴
// 사전기반 - this. 사용, this() <--- 
public class Person {
	
	// 멤버 변수 선언 
	private  String name; 
	private  int age;
	
	// 외부 클래스 생성자 
	private Person(PersonBuilder builder) {
		this.name = builder.name;
		this.age = builder.age; 
	}
	
	
	// Builder 클래스 정의 
	// static 내부 클래스로 정의 된다 
	public static class PersonBuilder {
	
		private String name; 
		private int age;
		
		// 초기화 - 필수 속성 초기화 하는 생성자  
		public PersonBuilder(String name, int age) {
			this.name = name; 
			this.age = age; 
		}
		
		// 선택적 속성을 설정하는 메서드 
		public PersonBuilder name(String name) {
			this.name = name;
			return this;  // 메서드 체이닝을 위해 this 를 반환 
		}
		
		public PersonBuilder age(int age) {
			this.age = age;
			return this;  // 메서드 체이닝을 위해 this 를 반환 
		}
		
		// 빌더 패턴에 핵심 
		public Person build() {
			return new Person(this);
		} 
	}
	
	public static void main(String[] args) {
		
		// Person p1 = new Person.PersonBuilder("홍길동", 10).build();
		Person p1 = new Person.PersonBuilder.age(10).name("홍길동").build();
		
	}
	
}

 

 

빌더 패턴의 장점

  1. 유연성: 객체 생성 절차와 표현 방식을 분리하여 다양한 객체를 생성할 수 있습니다.
  2. 재사용성: 동일한 생성 절차를 통해 다른 표현 방식의 객체를 생성할 수 있습니다.
  3. 가독성 향상: 복잡한 객체 생성 논리를 분리하여 코드를 더 이해하기 쉽게 만듭니다.

사용 사례

  • 복잡한 객체를 생성해야 하며, 여러 단계로 나뉘어 있을 때.
  • 동일한 생성 절차를 통해 다양한 표현 방식의 객체를 생성해야 할 때.
  • 객체 생성 코드가 반복되거나 복잡할 때.

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

[디자인패턴] MVVM 패턴  (0) 2025.01.23
[디자인패턴] 디자인 패턴 설명  (1) 2025.01.16
[디자인패턴] - 전략 패턴(Strategy Pattern)  (1) 2025.01.16
'디자인 패턴' 카테고리의 다른 글
  • [디자인패턴] MVVM 패턴
  • [디자인패턴] 디자인 패턴 설명
  • [디자인패턴] - 전략 패턴(Strategy Pattern)
noily4748
noily4748
백엔드 개발을 공부하고 있는 개발자 입니다!
  • noily4748
    noily4748 님의 블로그
    noily4748
  • 전체
    오늘
    어제
    • 분류 전체보기 (37)
      • 웹 (2)
      • Flutter (11)
      • Dart (5)
      • 디자인 패턴 (4)
      • 디스코드 (2)
      • [Flutter] 눈길 팀 프로젝트 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
noily4748
[디자인패턴] - 빌더 패턴(Builder Pattern)
상단으로

티스토리툴바