정의 : 동일한 시공 프로세스가 다른 표현을 생성 할 수 있도록 복잡한 물체의 구성을 표현에서 구분합니다.
유형 : 클래스 패턴 클래스 다이어그램 작성 :
네 가지 요소
코드 구현
제품의 추상 클래스 :
패키지 빌더; java.util.arraylist 가져 오기; 공개 초록 클래스 AbstractProduct {// 레코드 실행 순서 개인 ArrayList <string> part = new ArrayList <string> (); 공개 초록 void dosomething (); 공개 초록 void dootherthing (); // 최종, 서브 클래스는 최종 공개 공개 void Executive () {for (int i = 0; i <this.part.size (); i ++) {String actionName = this.part.get (i); if (actionName.equals ( "dosomething")) {this.dosomething (); } else if (actionName.equals ( "dootherthing")) {this.dootherthing (); }}} // 최종, 서브 클래스는 최종 공개 void setPart (ArrayList <String> Part) {this.part = part; }}제품 구현 범주 :
패키지 빌더; 공개 클래스 제품은 AbstractProduct를 확장합니다 {// 서브 클래스 특정 설명 단계 public void dosomething () {System.out.println ( "Will Do Something ..."); } public void dootherthing () {system.out.println ( "일이 완료되었습니다. }}빌더 초록 수업 :
패키지 빌더; java.util.arraylist 가져 오기; 공개 초록 클래스 빌더 {// 제품의 다른 부분을 다른 제품을 얻기 위해 다른 부분을 설정합니다. 공개 초록 void setPart (arraylist <string> part); // 제품 구축 공개 추상 제품 BuildProduct (); }빌더 구현 클래스 :
패키지 빌더; java.util.arraylist 가져 오기; 공개 클래스 ConcreteProduct 확장 빌더 {private product product = 신제품 (); public void setPart (ArrayList <String> Part) {this.Product.SetPart (Part); } 공개 제품 buildProduct () {return this.Product; }}감독 카테고리 :
패키지 빌더; java.util.arraylist 가져 오기; // 다른 제품의 생산 순서를 다시 파기하고 고급 공공 클래스 디렉터의 세부 사항을 차단합니다. 개인 빌더 빌더 = 새로운 ConcreteProduct (); 공개 제품 getaproduct () {this.part.clear (); this.part.add ( "dosomething"); this.part.add ( "dootherthing"); builder.setPart (part); return builder.buildProduct (); }}고객:
패키지 빌더; 공개 클래스 클라이언트 {public static void main (String [] args) {Director Director = New Director (); System.out.println ( "10 개의 제품을 생성합니다"); for (int i = 1; i <11; i ++) {system.out.println ( "스레드" + i + "제품"); Director.getAproduct (). Executive (); System.out.println (); }}}
빌더 모델의 장점
먼저, 빌더 모델은 매우 좋은 캡슐화를 가지고 있습니다. 빌더 모델을 사용하면 변화를 효과적으로 캡슐화 할 수 있습니다. 빌더 모델 사용 시나리오에서 일반 제품 범주와 빌더 카테고리는 비교적 안정적입니다. 따라서 감독 카테고리에서 주요 비즈니스 로직을 캡슐화하면 전체적으로 더 나은 안정성을 달성 할 수 있습니다.
둘째, 빌더 모드는 쉽게 확장 할 수 있습니다. 새로운 요구 사항이있는 경우 새로운 빌더 클래스를 구현하여 수행 할 수 있습니다. 기본적으로, 이전에 테스트하고 통과 한 코드를 수정할 필요가 없으므로 원래 기능에 위험이 없습니다.
빌더 모델과 공장 모델의 차이점
우리는 빌더 모델이 공장 모델과 매우 유사하다는 것을 알 수 있습니다. 전반적으로 Builder 모델은 공장 모델보다 "감독"역할이 하나만 있습니다. 빌더 패턴 클래스 다이어그램에서 감독 클래스가 최종 클라이언트로 간주되면 다이어그램의 나머지 부분은 간단한 공장 패턴으로 간주 될 수 있습니다.
공장 모델과 비교하여 빌더 모델은 일반적으로보다 복잡한 객체를 만드는 데 사용됩니다. 객체 생성 프로세스가 더 복잡하기 때문에 객체 생성 프로세스는 객체 생성 프로세스와 무관하여 새로운 클래스 인 Director 클래스를 형성합니다. 다시 말해, 공장 모델은 공장 클래스에서 객체의 전체 생성 프로세스를 캡슐화하고 공장 클래스는 클라이언트에게 최종 제품을 제공합니다. Builder 모델에있는 동안 Builder Class는 일반적으로 제품 클래스에서 각 구성 요소의 구성 만 제공하고 특정 구성 프로세스를 감독 클래스에 제공합니다. Director Class는 특정 규칙에 따라 각 구성 요소를 제품으로 형성 한 다음 형성된 제품을 클라이언트에게 전달할 책임이 있습니다.
요약
빌더 모델은 공장 모델과 유사합니다. 그것들은 빌더 모델이며 적용 가능한 시나리오도 매우 유사합니다. 일반적으로 제품의 건설이 복잡한 경우 공장 모델을 사용하십시오. 제품의 건설이 더 복잡한 경우 빌더 모델을 사용하십시오.