본문 바로가기
Design Pattern

[디자인 패턴] 자바빈즈 패턴 (JavaBeans Pattern)

by 노력남자 2020. 5. 11.
반응형

 

* 아래 3개의 패턴을 하나의 주제를 가지고 차례차례 설명합니다. 참고바랍니다.

 

점층적 생성자 패턴 (TelescopingConstructor Pattern)
자바빈즈 패턴 (JavaBeans Pattern)

빌더 패턴 (Builder Pattern)


자바빈즈 패턴 (JavaBeans Pattern)이란?

매개변수가 없는 생성자로 객체를 만든 후 세터(setter) 메서드들을 호출해 원하는 매개변수의 값을 설정하는 방식이다.

코드

public class NutritionFacts {

	private int servingSize = -1; // 필수
	private int servings = -1; // 필수
	private int calories = 0;
	private int fat = 0;
	private int sodium = 0;
	private int carbohydrate = 0;

	public NutritionFacts() { }

	public void setServingSize(int servingSize) {
		this.servingSize = servingSize;
	}
	public void setServings(int servings) {
		this.servings = servings;
	}
	public void setCalories(int calories) {
		this.calories = calories;
	}
	public void setFat(int fat) {
		this.fat = fat;
	}
	public void setSodium(int sodium) {
		this.sodium = sodium;
	}
	public void setCarbohydrate(int carbohydrate) {
		this.carbohydrate = carbohydrate;
	}
    
}

 

호출 방법

NutritionFacts cocalCola = new NutritionFacts();
cocalCola.setServingSize(240);
cocalCola.setServings(8);
cocalCola.setCalories(100);
cocalCola.setSodium(35);
cocalCola.setCarbohydrate(27);

 

특징

장점

 

1. 코드가 길긴하지만 인스턴스를 만들기 쉽다.

2. 가독성이 좋다.

 

단점

 

1. 객체 하나를 만들기 위해서 메서드를 여러 개 호출해야 한다.

2. 객체가 완전히 생성되기 전까지는 일관성(consistency)이 무너진 상태에 놓이게 된다.

   (점층적 생성자 패턴에서는 매개변수들이 유효한지를 생성자에서 확인하면 일관성 유지 가능)

3. 클래스를 불면으로 만들 수 없다. (해결책 : freeze 메서드 사용)

 

점층적 생성자 패턴의 단점을 해결해주는 자바빈즈 패턴이지만 해결해야 할 단점이 아직 많습니다.

 

다음 포스팅에선 점층적 생성자 패턴안정성 + 자바빈즈 패턴가독성을 겸비한 빌더 패턴에 대해서 알아보겠습니다.

 

여기까지 읽어주셔서 감사합니다.

 

참고

  • Joshua Bloch, Effective Java 3/E, 인사이트, 2018
반응형

댓글