前文回顧
單例模式(一)
單例模式(二)
觀察者模式
簡單工廠模式
工廠方法模式(一)
工廠方法模式(二)
抽象工廠模式(一)
抽象工廠模式(二)
原型模式
外觀模式
中介者模式
**模式
裝飾者模式
策略模式
狀態模式
命令模式
建造者模式的本質是乙個物件的構造過程是相對不變的、客戶端只是物件的消費者,不關心物件的建立過程,僅提出需求獲取物件即可,每一種需求即為一張配方,根據配方進行物件的建立。
場景描述
以電腦組裝過程為例:電腦的構成是不變的,但根據配置需求可以有不同的組裝方式。
物件類
#include
#include
using
namespace std;
class
computer
void
setcpu
(const string &m_cpu)
void
setdisk
(const string &m_disk)
void
setmainboard
(const string &m_mainboard)
void
setdisplay
(const string &m_display)
void
setram
(const string &m_ram)
void
setsystem
(const string &m_system)
void
showcopmtuter()
private
: string mainboard;
string cpu;
string disk;
string display;
string ram;
string system;
};
建立者基類
#include
#include
"computer.h"
using
namespace std;
class
computerbuilder
virtual
~computerbuilder()
virtual
void
buildcpu()
=0;virtual
void
builddisk()
=0;virtual
void
buildmainboard()
=0;virtual
void
builddisplay()
=0;virtual
void
buildram()
=0;virtual
void
buildsystem()
=0;virtual computer *
getcomputer()
=0;protected
: computer *m_computer;
};
建立者派生類
#include
"computerbuilder.h"
//配方1
class
computerbuilderone
:public computerbuilder
void
buildcpu
() override
void
buildram
() override
void
builddisk
() override
void
builddisplay
() override
void
buildsystem
() override
computer *
getcomputer
() override
};
指揮者類
#include
"computerbuilder.h"
#include
class
computerbuilderdirector
computer *
constructcomputer()
void
setbuilder
(shared_ptr m_builder)
private
: shared_ptr builder;
};
客戶端呼叫
設計模式 建造者模式C 實現
將乙個複雜物件的構建和他的表示分離,使得同樣的構建過程可以創造不同的表示 注 在模板方法中,實現了父類呼叫子類方法的功能,且,通過鉤子實現了方法的選擇性呼叫。但是其中整體的順序固定的,先做什麼再做什麼,不用做的通過鉤子遮蔽。而創造者模式就是對這個固定順序進行調整使得其更好工作的乙個模式。角色分工 p...
設計模式C 實現(6) 建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
設計模式C 實現(6) 建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...