设计模式---5(建造者模式的概念及其实现,建造者模式的角色与职责,建造者模式和工厂模式的区别)
生活随笔
收集整理的這篇文章主要介紹了
设计模式---5(建造者模式的概念及其实现,建造者模式的角色与职责,建造者模式和工厂模式的区别)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
建造者模式
建造者模式的概念
建造者模式的角色和職責
ConcreteBuilder 創建該產品的內部表示并定義它的裝配過程,包含定義組成部件的類, 包括將這些部件裝配成最終產品的接口。
建造者模式的適用情況
一個對象的構建比較復雜,將一個對象的構建和對象的表示進行分離。
建造者模式的實現
#include<iostream> #include<string>using namespace std;//一個房子不管是公寓還是別墅,他都有三種屬性,墻,地板,門 //建造公寓和別墅時,都需要建造者有房子的圖紙//房子類 class House { public://創建地板void setFloor(string floor){this->m_floor = floor;}//創建墻void setWall(string wall){this->m_wall = wall;}//創建門void setdoor(string door ){this->m_door = door;}//獲取地板string getFloor(){return m_floor;}//獲取墻string getWall(){return m_wall;}//獲取門string getDoor(){return m_door;} private:string m_floor;//地板string m_wall;//墻string m_door;//門 };//建造者 class Builder { public:virtual void makeFloor() = 0; //建造者建地板virtual void makeWall() = 0; //建造者建墻virtual void makeDoor() = 0; //建造者建門virtual House *GetHouse() = 0; //建造者建房子 };//建造者建造公寓 繼承建造者類 class FlatBuild : public Builder { public:FlatBuild(){phouse = new House;//創建一個新的房子}virtual void makeFloor(){//這個房子的墻是公寓的地板phouse->setFloor("公寓的地板");}virtual void makeWall(){phouse->setWall("公寓的墻");}virtual void makeDoor(){phouse->setdoor("公寓的門");}virtual House *GetHouse(){return phouse;} private:House *phouse; //維護一個房子類的指針 };//建造者建造別墅 class VillBuild :public Builder { public:VillBuild(){pHouse = new House;}virtual void makeFloor(){pHouse->setFloor("別墅的地板");}virtual void makeWall(){pHouse->setWall("別墅的墻");}virtual void makeDoor(){pHouse->setdoor("別墅的門");}virtual House *GetHouse(){return pHouse;} private:House *pHouse; };//設計師類,用來指揮建造者 class Director { public:void Construct(Builder *builder){builder->makeFloor();builder->makeWall();builder->makeDoor();} };int main(void) {//客戶自造房子,不花錢請建造者和設計師House *phouse = new House;phouse->setdoor("自己造的門");phouse->setFloor("自己造的地板");phouse->setWall("自己造的墻");cout << phouse->getDoor() << endl;cout << phouse->getWall() << endl;cout << phouse->getFloor() << endl;/*//建造者直接造公寓,不花錢請設計師Builder *builder = new FlatBuild;builder->makeFloor();builder->makeDoor();builder->makeWall();*///設計師指揮 建造者 建房子Director *director = new Director;//建公寓Builder *builder = new FlatBuild;director->Construct(builder);//設計師指揮建造者干活,直接全部建好House*house = builder->GetHouse();//獲取已經建好房子的鑰匙cout << house->getFloor() << endl;//查看建好房子的地板delete house;delete builder;//建別墅builder = new VillBuild;director->Construct(builder);//設計師 指揮工程隊 建好別墅house = builder->GetHouse();//從建造者那塊拿到別墅的鑰匙cout << house->getFloor() << endl;//查看建好的別墅的地板delete house;delete builder;delete director;system("pause");return 0; }建造者模式和工廠模式的區別
Factory 模式中:
Builder 模式:
總結
這樣做,目的是為了實現復雜對象生產線和其部件的解耦。強調的是過程 兩者的區別在于:
總結
以上是生活随笔為你收集整理的设计模式---5(建造者模式的概念及其实现,建造者模式的角色与职责,建造者模式和工厂模式的区别)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都大熊猫繁育基地观光车乘坐攻略
- 下一篇: 疏通输卵管什么药物好呢