7. Builder - 복잡한 인스턴스를 조립한다
Builder 디자인 패턴은 객체를 생성하는 복잡한 과정을 캡슐화하고, 객체의 다양한 구성 옵션을 설정하기 위한 패턴 중 하나입니다. 이 패턴은 Java와 같은 객체 지향 프로그래밍 언어에서 매우 유용하며, 객체의
가독성과 유지보수성을 향상시킬 수 있습니다.
Builder 디자인 패턴을 구현하려면 다음과 같은 주요 구성 요소가 필요합니다:
대상 객체 (Target Object): 빌더 패턴을 사용하여 생성하려는 복잡한 객체를 나타냅니다. 이 객체는 일반적으로 많은 설정 옵션을 가지고 있습니다.
빌더 인터페이스 (Builder Interface): 대상 객체를 생성하는 데 필요한 메서드를 정의하는 인터페이스입니다. 이 인터페이스는 객체를 구성하는 다양한 메서드를 선언하며, 이 메서드들은 빌더 패턴을
구현하는 다른 클래스에서 구체적으로 구현됩니다.구체적인 빌더 클래스 (Concrete Builder): 빌더 인터페이스를 구현하는 클래스입니다. 이 클래스는 대상 객체를 구성하는 데 필요한 메서드를 제공하며, 메서드 체이닝을 통해 다양한 설정 옵션을
연속적으로 적용할 수 있도록 합니다.디렉터 클래스 (Director): 빌더 클래스를 사용하여 대상 객체를 생성하는 클래스입니다. 이 클래스는 빌더 클래스를 인스턴스화하고, 설정 메서드를 호출하여 객체를 생성하고 반환합니다.
다음은 Java에서 Builder 디자인 패턴을 구현하는 간단한 예제입니다. 이 예제에서는 자동차 객체를 생성하는 데 빌더 패턴을 사용합니다:
// 대상 객체: 자동차
public class Car {
private String make;
private String model;
private int year;
public Car(String make, String model, int year) {
this.make = make;
this.model = model;
this.year = year;
}
// Getter 메서드들
}
// 빌더 인터페이스
public interface CarBuilder {
CarBuilder setMake(String make);
CarBuilder setModel(String model);
CarBuilder setYear(int year);
Car build();
}
// 구체적인 빌더 클래스
public class CarBuilderImpl implements CarBuilder {
private String make;
private String model;
private int year;
@Override
public CarBuilder setMake(String make) {
this.make = make;
return this;
}
@Override
public CarBuilder setModel(String model) {
this.model = model;
return this;
}
@Override
public CarBuilder setYear(int year) {
this.year = year;
return this;
}
@Override
public Car build() {
return new Car(make, model, year);
}
}
// 디렉터 클래스
public class CarDirector {
public Car constructSportsCar() {
return new CarBuilderImpl()
.setMake("Porsche")
.setModel("911")
.setYear(2023)
.build();
}
public Car constructSUV() {
return new CarBuilderImpl()
.setMake("Toyota")
.setModel("RAV4")
.setYear(2023)
.build();
}
}
위의 예제에서 CarDirector
클래스는 CarBuilder
를 사용하여 다양한 유형의 자동차 객체를 생성할 수 있습니다. 이를 통해 객체를 구성하는 과정을 더 명확하게 표현하고, 객체 생성 코드를 간결하게
관리할 수 있습니다.
'자바 디자인 패턴' 카테고리의 다른 글
*9. Bridge - 기능 계층과 구현 계층을 나눈다 (0) | 2023.10.12 |
---|---|
**8. Abstract Factory - 관련 부품을 조합하여 제품을 만든다 (0) | 2023.10.11 |
*6. Prototype - 복사해서 인스턴스를 만든다 (0) | 2023.10.09 |
5. Singleton - 인스턴스를 단 하나만 만든다 (0) | 2023.10.09 |
*4. Factory Method - 하위 클래스에서 인스턴스를 만든다 (0) | 2023.10.08 |