Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- aws
- java
- 리팩토링 2판
- JPA
- @TransactionalEventListener
- ksql
- intellij favorites
- 백명석님
- Linux
- intellij 핵심 단축키
- HandlerMethodArgumentResolver
- 리눅스
- #docker compose
- 원격 브랜 삭제
- 자바 ORM 표준 JPA 프로그래밍 정리
- Stream
- intellij 즐겨찾기
- findTopBy
- 자바 ORM 표준 JPA 프로그래밍
- @Transactional Propagation
- IntelliJ
- multipart테스트
- CompletableFuture
- ksqldb
- Spring Cloud Netflix
- javascript case
- git
- vue.js
- 마이크로 서비스
- 친절한 SQL 튜닝
Archives
- Today
- Total
시그마 삽질==six 시그마
빌더 패턴(Builder pattern) 본문
@Data
public class Person {
private String name;
private int age;
private int height;
public Person(String name, int age, int height) {
this.name = name;
this.age = age;
this.height = height;
}
}
위 클래스가 있을때
Person person = new Person("정우성",36,180);
인자가 많아지면 의미하는 바가 무엇인지 모를 수 있다.
키를 나이칸과 잘못 넣을 확율도 있다.
이럴때 빌더 패턴을 사용하면 유용하다.
public class Person {
private String name;
private int age;
private int height;
public Person(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.height = builder.height;
}
public static class Builder{
private String name;
private int age;
private int height;
public Builder(String name) {
this.name = name;
}
public Builder age(int age){
this.age=age;
return this;
}
public Builder height(int height){
this.height=height;
return this;
}
public Person build(){
return new Person(this);
}
}
}
Person person = new Person.Builder("정우성").age(30).height(180).build();
각 인자의 의미를 알기 쉽고
setter메소드가 없어서 불변객체 만들수 있다
점층적 생성자 패턴(텔레스코프 패턴)->자바빈 패턴(setter)->빌더패턴
'프로그래밍 > 디자인패턴' 카테고리의 다른 글
데코레이터 패턴(Decorator pattern) (0) | 2020.04.24 |
---|---|
스테이트 패턴(State pattern) (0) | 2020.04.24 |
전략 패턴(Strategy Pattern) (0) | 2020.04.24 |
싱글톤 패턴(Singleton Pattern) (0) | 2020.04.23 |
템플릿 메서드 패턴 & 팩토리 메서드 패턴 (0) | 2020.04.23 |
Comments