構(gòu)造一個(gè)超復(fù)雜對(duì)象的時(shí)候 將其構(gòu)造過程和表示相分離 讓其構(gòu)造過程高度可以變化 通過增加director類可以更改構(gòu)造步驟的順序 通過增加新的builder類可以高度自定義每個(gè)步驟的過程
創(chuàng)新互聯(lián)公司于2013年開始,先為撫順縣等服務(wù)建站,撫順縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為撫順縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。缺點(diǎn):一般只有超大型項(xiàng)目才會(huì)使用該模式 其他不需要 且類繁多 代碼不好閱讀
優(yōu)點(diǎn):符合開閉原則 將構(gòu)造過程與表示徹底分離 可以隨心所欲的構(gòu)造復(fù)雜對(duì)象
uml圖:
代碼實(shí)現(xiàn)如下:
//builder適用場(chǎng)景 大型項(xiàng)目 極其復(fù)雜的類對(duì)象的創(chuàng)建 且創(chuàng)建該類對(duì)象時(shí)遵循的步驟是相同的
//可以將對(duì)象的創(chuàng)建與表示相分離 比如考慮如下一個(gè)場(chǎng)景 一個(gè)人類要被生產(chǎn)則要由手腳頭軀干四部分組成
//但是每一個(gè)組件的生成都是高度可自定義的 我們就可以做如下抽象
//適用于構(gòu)建過程變化非常頻繁的對(duì)象 且構(gòu)造步驟也非常麻煩 通過修改增加director可以更改裝配步驟
//通過修改增加builder可以增加不同步驟的不同實(shí)現(xiàn)
//但是如果要加入新的步驟 新的構(gòu)造過程則需要更改抽象基類builder也會(huì)變得非常麻煩
class human
{
public:
void some_complex_func_before_build() {};
};
class man :public human
{
};
class woman :public human
{
};
class humanBuilder
{
public:
virtual void buildArm() = 0;
virtual void buildHead() = 0;
virtual void buildFeet() = 0;
virtual void buildBody() = 0;
virtual human* getResult() = 0;
protected:
human* human_;
};
class manBuilder:public humanBuilder
{
public:
manBuilder()
{
human_ = new man;
}
human* getResult()
{
return human_;
}
virtual void buildArm()
{
human_->some_complex_func_before_build();
}
virtual void buildHead()
{
human_->some_complex_func_before_build();
}
virtual void buildFeet()
{
human_->some_complex_func_before_build();
}
virtual void buildBody()
{
human_->some_complex_func_before_build();
}
};
class womanBuilder :public humanBuilder
{
public:
womanBuilder()
{
human_ = new woman;
}
human* getResult()
{
return human_;
}
virtual void buildArm()
{
human_->some_complex_func_before_build();
}
virtual void buildHead()
{
human_->some_complex_func_before_build();
}
virtual void buildFeet()
{
human_->some_complex_func_before_build();
}
virtual void buildBody()
{
human_->some_complex_func_before_build();
}
};
class humandirector
{
humandirector(humanBuilder* h):human_builder_(h)
{
}
human* construst()
{
human_builder_->buildArm();
human_builder_->buildBody();
human_builder_->buildFeet();
human_builder_->buildHead();
return human_builder_->getResult();
}
private:
humanBuilder* human_builder_;
};
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧