빌더 패턴
빌더 패턴을 사용하면 복잡한 객체를 다양한 방식으로 조립할 수 있습니다. 클라이언트 코드는 필요한 부분만 선택하여 구성할 수 있습니다.
가독성 향상 - 빌더 패턴은 생성자에 많은 매개변수가 있는 복잡한 객체를 생성할 때 특히 유용합니다. 각 매개변수의 의미를 명확하게 파악하기 어렵고 코드를 읽는데 어려움이 있을 수 있는데, 빌더 패턴을 사용하면 이러한 문제를 해결할 수 있습니다.
불변성 유지 - 빌더 패턴을 사용하면 객체의 불변성을 유지하는 것이 더 쉬워집니다. 모든 매개변수를 생성자에 전달하고, 이후에는 객체의 상태를 변경하지 않도록 할 수 있습니다. 물론 setter 를 만들어 주면 상태 변경 가능
유연성 - 빌더 패턴을 사용하면 객체를 생성하는 과정을 단계별로 분리할 수 있습니다. 이는 특정 단계를 생략하거나 순서를 변경하는 등, 객체 생성 과정을 더 유연하게 조정할 수 있게 합니다.
롬복과 비슷한 빌더 패턴
public class RobotClient {
public static void main(String[] args) {
Robot robot = new Robot.Builder()
.head("메탈 헤드")
.arms("티타늄 팔")
.legs("시멘트 다리")
.build();
System.out.println(robot);
}
}
// 빌더 패턴 만들어 보기
// this 에 3가지 사용 방법
// 1. this.
// 2. this()
// 3. return this;
public class Robot {
// 1. 맴버 변수 정의
private String head;
private String arms;
private String legs;
// 2. 생성자를 private 선언 해야 한다.
private Robot() {}
// 3. 정적 내부 클래스로 Builder 클래스를 선언해야한다.
// (외부에서 접근 가능하도록 설계해야 함)
public static class Builder {
// 4. 외부 클래스(아우터 클래스)를 멤버변수로 가지고 있어야 한다.
private Robot robot;
// 5. 생성자 선언
public Builder() {
this.robot = new Robot();
}
public Builder head(String head) {
robot.head = head;
return this;
}
public Builder arms(String arms) {
robot.arms = arms;
return this;
}
public Builder legs(String legs) {
robot.legs = legs;
return this;
}
// 핵심 ! - 반드시 build() 메서드를 만들어 주자
public Robot build() {
return this.robot;
}
}
// 외부 클래스 toString()
@Override
public String toString() {
return "Robot [head=" + head + ", arms=" + arms + ", legs=" + legs + "]";
}
}
'JAVA' 카테고리의 다른 글
Java - 객체지향 설계 원칙 SOLID (0) | 2024.02.16 |
---|---|
디자인 패턴 - 어댑터 패턴 (Adapter Pattern) (1) | 2024.02.07 |
디자인 패턴 - 싱글톤 패턴 (Singleton Pattern) (0) | 2024.02.07 |
Java - 디자인 패턴 개념의 이해 (0) | 2024.02.07 |
Java - Timestamp <-> String , 날짜 포맷 (0) | 2024.02.01 |