>  기사  >  Java  >  자바 빌더 패턴이란 무엇입니까?

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

WBOY
WBOY앞으로
2023-05-02 12:04:061329검색

1. 질문하기

집을 지어야 한다고 가정해 보세요. 과정은 쌓기, 벽 쌓기, 덮개 쌓기입니다. 일반주택, 고층빌딩, 빌라 등 다양한 종류의 주택이 있지만, 모든 종류의 주택에 대해 절차는 동일하지만 요구사항은 동일하지 않습니다. 3) 요구사항을 완료하는 프로그램을 작성해 주세요.

전통적인 아이디어는 아래 클래스 다이어그램 형식이어야 합니다. .

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

이런 글쓰기 방식의 장점은 이해하기 쉽고 조작하기 쉽다는 것입니다.

단점은 설계된 프로그램 구조가 너무 단순하고 설계된 캐시 레이어 개체가 없으며 프로그램 확장 및 유지 관리가 좋지 않다는 것입니다. 즉, 이 디자인 체계는 제품(즉, 주택)과 제품을 만드는 프로세스(즉, 주택 건설 프로세스)를 캡슐화하고 결합이 강화됩니다.

해결책: 제품과 제품 구축 프로세스를 분리 => 빌더 패턴.

2. 빌더 모드란 무엇인가요?

  • 생성자 패턴이라고도 하는 빌더 패턴은 복잡한 객체(추상 범주)의 구성 프로세스를 추상화할 수 있으므로 이 추상 프로세스의 다양한 구현 방법으로 다양한 표현(속성)을 사용하여 객체를 구성할 수 있습니다.

  • 빌더 패턴은 복잡한 객체를 단계별로 생성하는 것입니다. 사용자는 내부의 특정 구성 세부 사항을 알 필요가 없습니다. 빌더 패턴의 네 가지 주요 역할은 다음과 같습니다.

Product(제품 역할): 특정 제품 개체

  • Builder(추상 빌더): 지정된 인터페이스/추상 클래스의 다양한 구성 요소를 만듭니다.

    ConcreteBuilder(콘크리트 빌더): 인터페이스를 구현하고 다양한 구성 요소를 빌드하고 조립합니다.
  • Director(디렉터): 주로 Builder 인터페이스를 사용하여 개체를 만드는 데 사용됩니다. 하나는 고객과 대상의 생산 과정을 분리하는 것이고, 다른 하나는: 제품 대상의 생산 과정을 제어하는 ​​책임
  • 3. 케이스 코드
  • 가 다음과 같은 경우입니다. 집을 짓는 것은 빌더 패턴을 사용하여 해결됩니다. 그러면 클래스 다이어그램은 다음과 같을 것입니다(네 가지 주요 역할이 여기에 있습니다). House 클래스는 특정 제품(우리가 짓고 싶은 집의 엔터티)이며 HouseBuilder는 는 추상 빌더입니다. 특정 구성 프로세스는 내부적으로 구현되지 않지만 그 아래의 여러 하위 클래스에 의해 완료됩니다. 이러한 하위 클래스는 특정 빌더(CommonHouse, HighBuilding)이고 커맨더는 구성 프로세스를 담당하는 HouseDirector입니다. 제품 객체(어떤 유형의 집을 짓고 싶은지). 마지막 클라이언트는 테스트 클래스입니다.

package com.szh.builder;
 
public class House {
    private String basic;
    private String wall;
    private String roof;
 
    //setter and getter
}
package com.szh.builder;
 
//抽象的建造者
public abstract class HouseBuilder {
 
    protected House house = new House();
 
    //将建造的流程写好, 抽象的方法
    public abstract void buildBasic();
    public abstract void buildWall();
    public abstract void buildRoof();
 
    //建造房子好, 将产品(房子)返回
    public House buildHouse() {
        return house;
    }
 
}
package com.szh.builder;
 
public class CommonHouse extends HouseBuilder {
    @Override
    public void buildBasic() {
        System.out.println(" 普通房子打地基5m.... ");
    }
 
    @Override
    public void buildWall() {
        System.out.println(" 普通房子砌墙10cm.... ");
    }
 
    @Override
    public void buildRoof() {
        System.out.println(" 普通房子添加屋顶.... ");
    }
}
package com.szh.builder;
 
public class HighHouse extends HouseBuilder {
    @Override
    public void buildBasic() {
        System.out.println(" 高楼打地基100m.... ");
    }
 
    @Override
    public void buildWall() {
        System.out.println(" 高楼砌墙20cm.... ");
    }
 
    @Override
    public void buildRoof() {
        System.out.println(" 高楼添加透明屋顶.... ");
    }
}
package com.szh.builder;
 
//指挥者,这里去指定制作流程,返回产品
public class HouseDirector {
 
    HouseBuilder houseBuilder;
 
    //构造器传入 houseBuilder
    public HouseDirector(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }
 
    //通过setter传入 houseBuilder
    public void setHouseBuilder(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }
 
    //如何处理建造房子的流程,交给指挥者
    public House constructHouse() {
        houseBuilder.buildBasic();
        houseBuilder.buildWall();
        houseBuilder.buildRoof();
        return houseBuilder.buildHouse();
    }
}

3. StringBuilder 클래스와 해당 상위 클래스를 살펴보겠습니다.

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

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

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

Appendable 인터페이스는 여러 개의 추가 메서드(추상 메서드)를 정의합니다. 즉, Appendable은 추상 빌더이며 추상 메서드

를 정의합니다. 자바 빌더 패턴이란 무엇입니까?

AbstractStringBuilder는 Appendable 인터페이스 메소드를 구현합니다. 여기서 AbstractStringBuilder는 이미 빌더이지만 인스턴스화할 수 없습니다.

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

    StringBuilder는 커맨더 역할을 하는 동시에 특정 빌더 역할을 합니다. . 완료되고 StringBuilder는 AbstractStringBuilder를 상속합니다.
  • 4. 빌더 패턴 요약
  • 클라이언트(사용자 프로그램)는 제품 내부 구성의 세부 사항을 알 필요가 없으며, 제품 생성 과정에서 제품 자체를 분리하여 동일한 생성이 가능하도록 합니다. 프로세스는 다양한 제품 객체를 생성할 수 있습니다.
  • 각 콘크리트 빌더는 상대적으로 독립적이며 다른 콘크리트 빌더와 아무런 관련이 없으므로 콘크리트 빌더를 교체하거나 새로운 콘크리트 빌더를 추가하는 것이 쉽습니다. 사용자는 다양한 콘크리트 빌더 제품 개체를 사용하여 다른 결과를 얻을 수 있습니다.

    제품 생성 과정을 더욱 세밀하게 제어할 수 있습니다. 복잡한 제품의 생성 단계를 다양한 방법으로 세분화하면 생성 프로세스가 더 명확해지고 프로그램을 사용하여 생성 프로세스를 제어하기가 더 쉬워집니다.
  • 새로운 구체적인 빌더를 추가하는 데에는 원래 클래스 라이브러리의 코드를 수정할 필요가 없습니다. 커맨더 클래스는 추상 빌더 클래스용으로 프로그래밍되어 있으며 "개방-폐쇄 원칙"을 준수합니다.
  • 빌더 모드로 제작된 제품은 일반적으로 공통점이 많고, 구성요소도 비슷합니다. 제품 간의 차이가 클 경우 빌더 모드를 사용하는 데 적합하지 않으므로 사용 범위는 일정합니다. 제한.

  • 제품의 내부 변경 사항이 복잡한 경우 이러한 변경 사항을 구현하기 위해 특정 빌더 클래스를 많이 정의해야 하므로 시스템이 매우 커질 수 있으므로 이 경우 선택 여부를 고려하세요. 빌더 패턴.

  • 추상 팩토리 패턴은 제품군 생성을 실현합니다. 제품군은 다양한 분류 차원의 제품 조합입니다. 추상 팩토리 패턴을 사용하면 구성 프로세스에 신경 쓸 필요가 없습니다. 어느 공장에서 어떤 제품이 생산되는지 관심이 있습니다. 빌더 모드는 지정된 청사진에 따라 제품을 제작해야 하는 모드로, 예비 부품을 조립하여 새로운 제품을 생산하는 것이 주요 목적입니다.

위 내용은 자바 빌더 패턴이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제