C++設(shè)計(jì)模式之建造者模式(Builder)
建造者模式與工廠模式最大的區(qū)別在與建造者模式更注重的是創(chuàng)建的一系列過(guò)程,如流水化作業(yè),工廠模式強(qiáng)調(diào)的是區(qū)分不同的工廠和產(chǎn)品,而建造者模式更注重的統(tǒng)一不同產(chǎn)品在流水線上的工序,達(dá)到統(tǒng)一作業(yè)。
作用
建造者模式是將一個(gè)復(fù)雜對(duì)象和他的構(gòu)造和組裝過(guò)程分離,這樣再重復(fù)創(chuàng)建不同對(duì)象時(shí)使用相同的流程進(jìn)行建造。對(duì)于調(diào)用者來(lái)說(shuō),只需要知道產(chǎn)品的類(lèi)型,而不需要知道具體的組裝過(guò)程。
類(lèi)視圖

代碼實(shí)現(xiàn)
class Builder
{
public:
virtual void SelectCpu()= 0;
virtual void SelectMatherboard() = 0;
virtual void SelectMem() = 0;
virtual void SelectDisk() = 0;
virtual void SelectPower() = 0;
virtual void SelectShell() = 0;
};
//構(gòu)造PC
class PCBuilder : public Builder
{
public:
void SelectCpu() { cout<<"Select PC Cpu"<<endl; }
void SelectMatherboard() { cout<<"Select PC Matherboard"<<endl; }
void SelectMem() { cout<<"Select PC Mem"<<endl; }
void SelectDisk() { cout<<"Select PC Disk"<<endl; }
void SelectPower() { cout<<"Select PC Power"<<endl; }
void SelectShell() { cout<<"Select PC Shell"<<endl; }
};
//構(gòu)造Notebook
class NoteBookBuilder : public Builder
{
public:
void SelectCpu() { cout<<"Select NoteBook Cpu"<<endl; }
void SelectMatherboard() { cout<<"Select NoteBook Matherboard"<<endl; }
void SelectMem() { cout<<"Select NoteBook Mem"<<endl; }
void SelectDisk() { cout<<"Select NoteBook Disk"<<endl; }
void SelectPower() { cout<<"Select NoteBook Power"<<endl; }
void SelectShell() { cout<<"Select NoteBook Shell"<<endl; }
};
//構(gòu)造的指揮官
class Director
{
private:
Builder *m_pBuilder;
public:
Director(Builder *builder) { m_pBuilder = builder; }
void Create(){
m_pBuilder->SelectCpu();
m_pBuilder->SelectMatherboard();
m_pBuilder->SelectMem();
m_pBuilder->SelectDisk();
m_pBuilder->SelectPower();
m_pBuilder->SelectShell();
}
};
//調(diào)用
int main()
{
NoteBookBuilder thin;
Director director(&thin);
director.Create();
return 0;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Qt自定義表頭實(shí)現(xiàn)過(guò)濾功能的方法
這篇文章主要個(gè)給大家介紹了關(guān)于Qt自定義表頭實(shí)現(xiàn)過(guò)濾功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Qt具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
c++如何實(shí)現(xiàn)跳表(skiplist)
這篇文章主要介紹了c++如何實(shí)現(xiàn)跳表,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-08-08
C++實(shí)現(xiàn)LeetCode(648.替換單詞)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(648.替換單詞),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
通過(guò)c++11改進(jìn)我們的模式之改進(jìn)命令模式
這篇我要講的是如何使用c++11改進(jìn)命令模式,感興趣的朋友可以看下2013-11-11
C語(yǔ)言實(shí)現(xiàn)循環(huán)隊(duì)列
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)循環(huán)隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07

