빌더 디자인 패턴이란 무엇입니까?

빌더 디자인 패턴이란 무엇입니까?

빌더 디자인 패턴은 개체의 속성을 캡슐화하고 개체의 표현을 구성할 수 있도록 합니다. 이 패턴을 사용하면 동일한 클래스에 속하더라도 속성이 다른 복잡한 개체를 구성할 수 있습니다.

일반적인 개체 클래스에는 특성, 생성자 및 메서드가 포함됩니다. 빌더 패턴을 사용하면 개체 클래스에서 구성 논리를 추출하여 빌더라는 클래스에 배치할 수 있습니다. 그런 다음 이러한 빌더 클래스를 사용하여 동일한 개체의 다양한 변형을 만들 수 있습니다.

Java에서 빌더 패턴 구현

빌더 패턴의 좋은 예는 고객이 다양한 토핑 옵션을 선택할 수 있는 피자 주문 시스템입니다.

제품 등급

한 가지 접근 방식은 빌더를 인터페이스로 만드는 것이지만 먼저 제품 클래스를 만들어야 합니다. 이 샘플 애플리케이션의 제품은 피자입니다.

public class Pizza {
    // properties
    private int orderNumber;
    private String pizzaDough;
    private String topping;

    // getters and setters
    public int getOrderNumber() {
        return orderNumber;
    }

    public void setOrderNumber(int orderNumber) {
        this.orderNumber = orderNumber;
    }

    public String getPizzaDough() {
        return pizzaDough;
    }

    public void setPizzaDough(String pizzaDough) {
        this.pizzaDough = pizzaDough;
    }

    public String getTopping() {
        return topping;
    }

    public void setTopping(String topping) {
        this.topping = topping;
    }
}

빌더 클래스

Pizza Java 클래스에는 세 가지 속성과 각각의 getter 및 setter가 있지만 생성자 메서드는 없습니다. 빌더 인터페이스를 사용하면 피자 객체의 각 측면을 개별적으로 생성할 수 있습니다. 그러면 전체 피자 개체를 검색할 수 있습니다.

public interface Builder {
    public void createPizzaDough();
    public void createTopping();
    public Pizza getPizza();
}

샘플 피자 애플리케이션을 통해 고객은 치즈, 페퍼로니, 양파 또는 다양한 조합과 같은 토핑을 주문할 수 있습니다. 따라서 고객이 주문할 피자는 치즈입니다.

public class CheesePizzaBuilder implements Builder {
    private Pizza pizza;

    public CheesePizzaBuilder() {
        this.pizza = new Pizza();
    }

    @Override
    public void createPizzaDough() {
        this.pizza.setPizzaDough("Dough");
    }

    @Override
    public void createTopping() {
        this.pizza.setTopping("Cheese");
    }

    @Override
    public Pizza getPizza() {
        return this.pizza;
    }
}

CheesePizzaBuilder 클래스는 Builder 인터페이스를 구현하고 이를 사용하여 새 치즈 피자를 만듭니다. 이것은 피자 개체의 한 표현입니다. 또한 Pizza 클래스와 독립적인 방식으로 이 작업을 수행합니다.

CheesePizzaBuilder 클래스는 Pizza 클래스에 대해 많이 알지 못하며 기능을 완료하기 위해 알아야 할 사항만 알고 있습니다. 피자 클래스에 도우와 토핑 속성이 있다는 것을 알고 있으며 이러한 속성을 모든 치즈 피자가 가질 두 가지 특정 값으로 설정합니다. 이제 애플리케이션이 CheesePizzaBuilder 클래스를 호출할 때마다 치즈 토핑이 있는 새로운 피자를 생성합니다.

디렉터 클래스

director 클래스는 빌더 패턴의 중요한 측면입니다. 구체적인 빌더 클래스의 유일한 목적은 특정 개체를 만드는 것입니다. 개체의 다른 부분을 개별적으로 생성하여 이를 달성합니다.

그러나 빌더 콘크리트 클래스는 알고리즘을 인식하지 못합니다. 토핑을 추가하기 전에 도우를 만드는 방법을 아는 빌더 클래스는 없습니다. 이것이 디렉터 클래스의 기능입니다.

public class Director {
    private Builder pizzaBuilder;

    public Director(Builder pizzaBuilder) {
        this.pizzaBuilder = pizzaBuilder;
    }

    public Pizza getPizza() {
        return this.pizzaBuilder.getPizza();
    }

    public void makePizza() {
        this.pizzaBuilder.createPizzaDough();
        this.pizzaBuilder.createTopping();
    }
}

Director 클래스는 빌더 인터페이스를 사용하여 피자를 만듭니다. 알고리즘의 수호자입니다.

빌더 디자인 패턴 사용의 이점

빌더 디자인 패턴을 사용하는 주요 이점은 캡슐화 속성입니다. 이는 보안 응용 프로그램 개발을 지원하므로 소프트웨어 엔지니어링의 중요한 측면입니다.

이 디자인 패턴의 또 다른 장점은 개체 생성 방식입니다. 이를 통해 각 단계가 독립적인 다단계 프로세스를 생성할 수 있으므로 디버깅이 더 쉬워집니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다