빌더 패턴 정의 : 동일한 시공 프로세스가 다른 표현을 생성 할 수 있도록 복잡한 물체의 구성을 표현에서 구분합니다.
빌더 패턴은 복잡한 객체를 단계별로 생성하는 것입니다.이 객체는 복잡한 객체의 유형과 내용을 지정하여 사용자가 구축 할 수 있습니다. 사용자는 특정 내부 건축 세부 사항을 모릅니다. 빌더 모드는 추상 공장 모드와 매우 유사합니다.
빌더 모드를 사용하는 이유
구성 요소에서 복잡한 물체를 구축하는 프로세스를 분리하는 것입니다. 참고 : 분리 프로세스 및 구성 요소입니다.
복잡한 물체에는 자동차와 같은 많은 양의 구성 요소가 있기 때문에 바퀴, 스티어링 휠, 엔진 및 다양한 작은 부품 등이 많지만이보다 훨씬 더 많은 부분이 있습니다 이러한 부품을 자동차를 위해 자동차로 조립하기 위해이 조립 프로세스는 매우 복잡하며 (좋은 조립 기술이 필요) 빌더 모델은 구성 요소와 어셈블리 프로세스를 분리하는 것입니다.
빌더 모드 사용 방법
먼저, 복잡한 객체가 여러 구성 요소로 구성되어 있다고 가정 해 봅시다. 빌더 패턴은 복잡한 객체의 생성과 구성 요소의 생성을 분리하며 각각 Builder 클래스와 감독 클래스로 표시됩니다.
첫째, 복잡한 객체의 다양한 구성 요소를 만드는 방법을 정의하는 인터페이스가 필요합니다.
코드 사본은 다음과 같습니다.
공개 인터페이스 빌더 {
// 구성 요소를 작성합니다. 예를 들어 자동차 휠을 만듭니다
void buildParta ();
// 자동차 스티어링 휠 생성과 같은 구성 요소 B 만들기
void buildPartB ();
// 자동차 엔진 생성과 같은 구성 요소 C를 만듭니다
void buildPartc ();
// 최종 어셈블리 결과를 반환합니다 (마지막으로 조립 된 자동차로 돌아 가기)
// 완제품의 조립 프로세스는 여기에서 수행되지 않지만 아래 감독 클래스로 전송됩니다.
// 이것은 분리 프로세스와 구성 요소를 실현합니다
제품 getResult ();
}
감독을 사용하여 마지막 복잡한 객체를 구축하고 위의 빌더 인터페이스는 구성 요소를 만드는 방법 (복잡한 객체는 이러한 구성 요소로 구성됨)을 캡슐화합니다.
코드 사본은 다음과 같습니다.
공공 클래스 디렉터 {
개인 건축업자 빌더;
공무원 (Builder Builder) {
this.builder = builder;
}
// 마지막으로, parta partb partc는 복잡한 개체를 형성하는 데 사용됩니다.
// 이것은 휠 스티어링 휠과 엔진을 자동차에 조립하는 과정입니다.
public void construct () {
builder.buildparta ();
builder.buildpartb ();
builder.buildpartc ();
}
}
Builder ConcreteBuilder의 특정 구현 :
1. 인터페이스 빌더를 완성하여 제품 구성 요소를 빌드하거나 조립합니다.
2. 어떤 특정한 것을 만들고 싶은지 정의하고 명확하게하십시오.
3. 제품을 다시 찍을 수있는 인터페이스를 제공하십시오.
코드 사본은 다음과 같습니다.
공공 클래스 ConcreteBuilder는 빌더 {
parta, partb, partc;
public void buildParta () {
// Parta를 빌드하는 방법의 특정 코드는 다음과 같습니다.
};
public void buildPartB () {
// 여기에 Partb를 구축하는 방법의 특정 코드는 다음과 같습니다.
};
public void buildPartc () {
// 여기에 partb를 빌드하는 방법의 특정 코드는 다음과 같습니다.
};
공개 제품 getResult () {
// 최종 어셈블리 결과로 돌아갑니다
};
}
복잡한 개체 : 제품 :
코드 사본은 다음과 같습니다.
공개 인터페이스 제품 {}
복잡한 개체의 구성 요소 :
코드 사본은 다음과 같습니다.
공개 인터페이스 파트 {}
빌더 모드를 호출하는 방법을 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
ConcreteBuilder Builder = New ConcreteBuilder ();
이사 = 새로운 이사 (Builder);
Director.construct ();
제품 제품 = builder.getResult ();
빌더 모드 응용 프로그램
실제 Java 사용에서는 자원 제공 업체가 충분한 리소스를 제공 할 수 없으며 이러한 리소스를 많은 사용자가 반복적으로 공유 해야하는 경우 종종 풀을 사용해야합니다.
"풀"은 실제로 수영장에 복잡한 자원의 "부서진"이있을 때 (예 : 데이터베이스 연결 풀, 때로는 연결이 중단 될 수 있음), "파손 된 사지"가 재활용되면. 메모리 사용량이 향상되고 풀 성능이 향상됩니다. 빌더 모드에서 감독 클래스를 수정하여 "파단 사지"가 깨진 구성 요소를 진단 한 다음이 구성 요소를 수리하십시오.