建造者模式(Builder):將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
模式實現:
[code]class Builder;//產品class Product{public: void AddPart(const char *info){ m_PartInfoVec.push_back(info); } void ShowProduct(){ for(std::vector<const char *>::iterator item = m_PartInfoVec.begin(); item != m_PartInfoVec.end(); ++item){ std::cout << *item << std::endl; } }private: std::vector<const char *> m_PartInfoVec;};//Builder建造者,統一抽象介面class Builder{public: virtual void BuildPartA(){} virtual void BuildPartB(){} virtual Product* GetProduct() { return NULL;}};//具體的被建立對象方法class ConcreteBuilder:public Builder{public: ConcreteBuilder(){ m_Product = new Product(); } void BuildPartA(){ m_Product->AddPart("PartA completed"); } void BuildPartB(){ m_Product->AddPart("PartB q"); } Product* GetProduct(){ return m_Product; }private: Product *m_Product;};//Director控制具體建造對象的建立class Director{public: Director(Builder *builder) { m_Builder = builder; } void CreateProduct(){ m_Builder->BuildPartA(); m_Builder->BuildPartB(); }private: Builder *m_Builder;};
用戶端:
[code]int main(){ Builder *builderObj = new ConcreteBuilder(); Director directorObj(builderObj); directorObj.CreateProduct(); Product *productObj = builderObj->GetProduct(); if(productObj == NULL) { return 0; } productObj->ShowProduct(); delete productObj; productObj = NULL; delete builderObj; builderObj = NULL;}
以上就是C++設計模式淺識建造者模式的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!