본문 바로가기

디자인 패턴/Java언어로 배우는 디자인패턴 입문 책 정리

Builder 패턴

생성자를 만들때 변수 초기화를 생성자 파라미터에서 하는게 아니라 각 변수이름의 함수를 이요해 구조적으로 초기화 하는 디자인 패턴


1. 코드

MyClass : bulider 패턴을 이용해 생성하는 객체

public class MyClass {
	private int a;
	private String b;
	private float c;

	public static class Builder {
		private int a;
		private String b;
		private float c;
		
		public Builder(int a) {
			this.a = a;
		}
		
		public Builder b(String b) {
			this.b = b;
			return this;
		}
		
		public Builder c(float c) {
			this.c = c;
			return this;
		}
		
		public MyClass build() {
			return new MyClass(this);
		}
	}
	
	private MyClass(Builder builder) {
		this.a = builder.a;
		this.b = builder.b;
		this.c = builder.c;
	}
}

Main : test 코드

public class Main {

	public static void main(String[] args) {
		MyClass a = new MyClass.Builder(1)
				.b("b")
				.c(1.1f)
				.build();
	}
}

2. 특징

- 초기화 하는 변수의 의미를 함수에 담을 수 있어 가독성이 좋아짐

- 객체 내부는 복잡해 보임

- 내부 클래스 이용

- 필수 파라미터는 Builder 클래스의 생성자로 강제성 부여

 

3. 해당 패턴을 고려해볼만한 상황

- 객체 생성 할 때 초기화가 많이 필요할 때

 

'디자인 패턴 > Java언어로 배우는 디자인패턴 입문 책 정리' 카테고리의 다른 글

Bridge 패턴  (0) 2021.01.17
Abstract Factory 패턴  (0) 2021.01.16
Prototpye 패턴  (0) 2021.01.03
Singleton 패턴  (0) 2021.01.01
Factory Method 패턴  (410) 2020.12.31