C ++ 디자인 패턴 -Builder

동기 부여
소프트웨어 시스템이, 때로는 일반적으로 특정 알고리즘을 하위 개체의 여러 부분으로 구성 작업을 만들기 위해 "복잡한 객체를"직면 인한 수요 변화를,이 복잡한 주제의 다양한 부분들은 극적인 변화에 직면 하지만 그들을 결합 알고리즘은 상대적으로 안정적이다.

어떻게 이러한 변화에 대응하기 위해? 어떻게 "패키지 메커니즘"하여 요구 변화로 변경되지 않습니다 "안정적인 건설 알고리즘"의 시스템을 유지, "복잡한 객체의 여러 부분"의 변화를 분리하기를 제공하기 위해?

정의
와 동일한 구성 프로세스 (안정제) 복잡한 객체의 다른 표현 (편차)을 생성 할 수 있도록 구조가, 그것의 상 분리를 나타낸다.
- "디자인 패턴"GoF의

구조
QQ 사진 20200124191818.png

class House{
    //....
};
//Builder
class HouseBuilder {
public:
    House* GetResult(){
        return pHouse;
    }
    virtual ~HouseBuilder(){}
protected:
    
    House* pHouse;
    virtual void BuildPart1()=0;
    virtual void BuildPart2()=0;
    virtual void BuildPart3()=0;
    virtual void BuildPart4()=0;
    virtual void BuildPart5()=0;
    
};

class StoneHouse: public House{
    
};
//ConcreteBuilder
class StoneHouseBuilder: public HouseBuilder{
protected:
    
    virtual void BuildPart1(){
        //pHouse->Part1 = ...;
    }
    virtual void BuildPart2(){
        
    }
    virtual void BuildPart3(){
        
    }
    virtual void BuildPart4(){
        
    }
    virtual void BuildPart5(){
        
    }
    
};

//Director
class HouseDirector{
    
public:
    HouseBuilder* pHouseBuilder;
    
    HouseDirector(HouseBuilder* pHouseBuilder){
        this->pHouseBuilder=pHouseBuilder;
    }
    
    House* Construct(){
        
        pHouseBuilder->BuildPart1();
        
        for (int i = 0; i < 4; i++){
            pHouseBuilder->BuildPart2();
        }
        
        bool flag=pHouseBuilder->BuildPart3();
        
        if(flag){
            pHouseBuilder->BuildPart4();
        }
        
        pHouseBuilder->BuildPart5();
        
        return pHouseBuilder->GetResult();
    }
};

요약
1. 복수의 파트로 구성된 복잡한 오브젝트이며, 각각 개방 각각 빌더 클래스 및 클래스 디렉터를 나타내는 복잡한 오브젝트 부재를 제작하는 모델 빌더를 생성하는 것이다. 위의 방법에 캡슐화 이사와 최종 복잡한 객체의 건설 (만든이 위원으로 구성 복잡한 객체) 빌더 인터페이스 멤버를 생성, 즉, 어떻게 제품의 멤버로 최종 조립을 담당하는 이사. 그래서 디커플링의 빌더 패턴 설계 및 구현을 할 수 있습니다.
2. 어디에서 변경 포인트, 어디 패키지 - 주로 "의 복잡성에 응답 빌더 모드
자주 수요의 여러 부분과 같은 변화". 단점은 "단계 빌드에 의해 단계를 처리하기 어렵다는 점이다
알고리즘"수요 변화.

추천

출처www.cnblogs.com/Redwarx008/p/12232532.html