概念
builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種物件建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承和過載的方式,動態地建立具有復合屬性的物件。
物件的建立:builder模式是為物件的建立而設計的模式- 建立的是乙個復合物件:被建立的物件為乙個具有復合屬性的復合物件- 關注物件建立的各部分的建立過程:不同的工廠(這裡指builder生成器)對產品屬性有不同的建立方法
角色和職責
1) builder:為建立產品各個部分,統一抽象介面。
2) concretebuilder:具體的建立產品的各個部分,部分a, 部分b,部分c。
3) director:構造乙個使用builder介面的物件。
4) product:表示被構造的複雜物件。
concretebuilder建立該產品的內部表示並定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的介面。
建立者模式和工廠模式的區別
factory模式中:
1、有乙個抽象的工廠。
2、實現乙個具體的工廠—汽車工廠。
3、工廠生產汽車a,得到汽車產品a。
4、工廠生產汽車b,得到汽車產品b。
這樣做,實現了購買者和生產線的隔離。強調的是結果。
builder模式:
1、引擎工廠生產引擎產品,得到汽車部件a。
2、輪胎工廠生產輪子產品,得到汽車部件b。
3、底盤工廠生產車身產品,得到汽車部件c。
4、將這些部件放到一起,形成剛好能夠組裝成一輛汽車的整體。
5、將這個整體送到汽車組裝工廠,得到乙個汽車產品。
這樣做,目的是為了實現複雜物件生產線和其部件的解耦。
案例
package pack;
class product
public
void
setb()
public
void
geta()
public
void
getb()
}inte***ce builder
class concretebuilder implements builder
public
void
buildparta()
public
void
buildpartb()
public product getproduct()
}class director
}public
class mian
}
#include
using
namespace
std;
#include "string"
class house
void setwall(string wall)
void setdoor(string door)
//string getfloor()
string setwall()
string setdoor()
protected:
private:
string m_floor;
string m_wall;
string m_door;
};class builder
;//公寓
class flatbuild : public builder
virtual
void makefloor()
virtual
void makewall()
virtual
void makedoor()
virtual house *gethouse()
private:
house *phouse;
};//別墅
class villabuild : public builder
virtual
void makefloor()
virtual
void makewall()
virtual
void makedoor()
virtual house *gethouse()
private:
house *phouse;
};class director
protected:
private:
};void main()
建造者模式
1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...
建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
建造者模式
建造者模式將複雜物件的構建和它的表示分離,使同樣的構建過程能夠構建出不同的表示。以乙個建造小人為例子,可以建造2種小人,胖子和瘦子 include using namespace std class builder 抽象建造者類 class buildthinman public builder 瘦...