Java 운용 디자인 모델 중의 건설자 모델 구축 프로젝트의 실례 해석

4224 단어 Java작성자 모드
1. 건설자 모델 개념
정의: 복잡한 대상 구축과 그 표현을 분리하여 같은 구축 과정에서 서로 다른 표현을 만들 수 있도록 한다.
핵심: 구축과 표시는 분리되고 구조와 표시는 다르다
추상적인 공장 모델과 구별:
(1) 추상적인 공장 모델과 비슷하다. 복잡한 대상을 만들 수 있기 때문이다.주요한 차이점은 건설자 모델은 한 걸음 한 걸음 복잡한 대상을 구축하는 데 중심을 두고 부품 유형과 조립 공정의 순서에 주목한다.추상적인 공장 모델은 여러 계열의 제품 대상(간단하거나 복잡한)에 중심을 둔다.건설자 모델은 마지막 단계에서 제품으로 돌아가고 추상적인 공장에 대해 말하자면 제품은 즉시 되돌아온다.
(2) 건설자 모델에서 어떤 지도자는 지도자가 건설자를 관리하고 사용자는 지도자와 연락하며 지도자가 건설자와 연락하여 제품을 얻는다.즉, 건설 모델은 단계적으로 진행되는 건설 과정을 강제적으로 실행할 수 있다.
2. 그의 역할
(1) 추상 작성자(Builder) 역할: 이 역할은 제품의 각 구성 부분을 규범화하고 추상화하는 데 사용되며 일반적으로 응용 프로그램의 논리에 독립적이다.
(2) 구체적인 작성자(ConcreteBuilder) 역할:
이 역할은 추상적인 건설자가 정의한 모든 방법을 실현하고 구축된 제품의 실례를 되돌려준다.
(3) 제품(Product) 역할:
이 역할은 건설 중의 복잡한 대상으로 하나의 시스템에 하나보다 많은 제품 종류가 있을 수 있다. 이런 제품들은 반드시 공공적인 인터페이스가 있는 것은 아니며 완전히 관련이 없을 수 있다.
(4) 지도자(Director) 역할:
이 역할은 기존 모듈의 순서를 배정하고 건설자 Builder에게 건설을 시작하라고 알려준다. 
3. 실례

public interface Builder { 
 void buildPartA(); 
 void buildPartB(); 
 void buildPartC(); 
  
} 


public class BuilderImpl implements Builder { 
  
 @Override 
 public void buildPartA() { 
  System.out.println(" A"); 
 } 
 
 @Override 
 public void buildPartB() { 
  System.out.println(" B"); 
 } 
 
 @Override 
 public void buildPartC() { 
  System.out.println(" C"); 
 } 
 
} 


public class BuilderImpl2 implements Builder { 
  
 @Override 
 public void buildPartA() { 
  System.out.println(" AA"); 
 } 
 
 @Override 
 public void buildPartB() { 
  System.out.println(" BB"); 
 } 
 
 @Override 
 public void buildPartC() { 
  System.out.println(" CC"); 
 } 
 
} 


/** 
 *  :      
 *  Builder 
 */ 
public class Director { 
 private Builder builder; 
  
 public Director(Builder builder) { 
  this.builder = builder; 
 } 
 /** 
  *  :  
  *  , new Director  
  */ 
 public void construct() { 
  System.out.println("director   builder "); 
  builder.buildPartA(); 
  builder.buildPartB(); 
  builder.buildPartC(); 
 } 
  
} 

public class Director2 { 
 private Builder builder; 
  
 public Director2(Builder builder) { 
  this.builder = builder; 
 } 
 /** 
  *  :  
  *  , new Director  
  */ 
 public void construct() { 
  System.out.println("director2   builder "); 
  builder.buildPartB(); 
  builder.buildPartC(); 
  builder.buildPartA(); 
 } 
  
} 


public class Test { 
 public static void main(String[] args) { 
  Builder builder = new BuilderImpl(); 
  Director director = new Director(builder); 
  /* 
   *  , (buildPartA、buildPartB、buildPartC) , new builder  
   *  ,new  director 
   *  , , new director,new builder 
   */ 
   
  director.construct(); 
   
  System.out.println(""); 
   
  Builder builder2 = new BuilderImpl2(); 
  Director director2 = new Director(builder2); 
  director2.construct(); 
   
  System.out.println(""); 
   
  Builder builder3 = new BuilderImpl2(); 
  Director2 director3 = new Director2(builder3); 
  director3.construct(); 
 } 
} 

인쇄:

director   builder  
 A 
 B 
 C 
 
director   builder  
 AA 
 BB 
 CC 
 
director2   builder  
 BB 
 CC 
 AA 

4. 장단점
(1) 이점:
A. 제품의 내부 표시를 변경할 수 있습니다.
B. 봉인된 건물과 대표적인 코드.
C. 시공 공정을 초과하는 절차를 제어한다.
(2) 단점:
A. 다양한 유형의 개별 ConcreteBuilder를 만들어야 합니다.
5. 장면 사용:
(1) 복잡한 대상을 만드는 알고리즘이 그 대상의 구성 부분과 조립 방식에 독립해야 할 때.
(2) 구조 과정이 구조된 대상이 서로 다른 표시를 허용해야 할 때(같은 방법, 서로 다른 집행 순서, 서로 다른 결과가 발생할 때).

좋은 웹페이지 즐겨찾기