[Java] builder-pattern

Yeooooooni·2022년 3월 12일
0

객체 생성 패턴 종류


  1. 생성자, 수정자 패턴
  2. 정적 메소드 패턴
  3. 빌더 패턴(lombok 이용)

builder pattern

  • 기존 )
    • 필요한 매개변수 종류별로 생성자 만들어야 했음
    • 생성자 사용 시 파라미터 순서 지켜야 함
    • setter로 인해 객체 불변성이 깨진다 -> 변경 가능성 존재
  • 빌더패턴 이용 시)
    • 불필요한 생성자 제거할 수 있음
    • 데이터의 입력 순서 지킬 필요 없음
    • 롬복(lombok)을 이용하면 생성자클래스를 따로 정의하지 않아도 됨
    • 가독성이 높아짐
  • 예시
// lombok을 이용하지 않는 경우

public class User{
	private Long id;
    private String name;
    private String address;
    
    getter/setter/생성자 정의
}

public class UserBuilder{
	
	private Long id;
    private String name;
    private String address;
    
    UserBuilder setId(Long id){
    	this.id=id;
        return this;
    }
    UserBuilder setId(String name){
    	this.name=name;
        return this;
    }
    UserBuilder setAddress(Address address){
    	this.address=address;
        return this;
    }
    User build(){
    	return new User(id,name,address);
    }
}

public static void main(String[] args){
	UserBuilder userBuilder = new UserBuilder();
	User userInfo = userBuilder.build()
    							.setId(1)
    							.setName("name1")
    							.setAddress("address1")
}
    
    
// lombok을 이용하는 경우
import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class User{
	private Long id;
    private String name;
    private String address;
}

public static void main(String[] args){
	User user = User.builder()
    				.id(1)
    				.name("name1")
                    .address("address1")
}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN