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