定義:將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示。 html
類型:建立類模式 編程
類圖: 設計模式
四個要素 測試
代碼實現 ui
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
class
Product
{
private
String
name
;
private
String
type
;
public
void
showProduct
(
)
{
System
.
out
.
println
(
"名稱:"
+
name
)
;
System
.
out
.
println
(
"型號:"
+
type
)
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
}
abstract
class
Builder
{
public
abstract
void
setPart
(
String
arg1
,
String
arg2
)
;
public
abstract
Product
getProduct
(
)
;
}
class
ConcreteBuilder
extends
Builder
{
private
Product
product
=
new
Product
(
)
;
public
Product
getProduct
(
)
{
return
product
;
}
public
void
setPart
(
String
arg1
,
String
arg2
)
{
product
.
setName
(
arg1
)
;
product
.
setType
(
arg2
)
;
}
}
public
class
Director
{
private
Builder
builder
=
new
ConcreteBuilder
(
)
;
public
Product
getAProduct
(
)
{
builder
.
setPart
(
"寶馬汽車"
,
"X7"
)
;
return
builder
.
getProduct
(
)
;
}
public
Product
getBProduct
(
)
{
builder
.
setPart
(
"奧迪汽車"
,
"Q5"
)
;
return
builder
.
getProduct
(
)
;
}
}
public
class
Client
{
public
static
void
main
(
String
[
]
args
)
{
Director
director
=
new
Director
(
)
;
Product
product1
=
director
.
getAProduct
(
)
;
product1
.
showProduct
(
)
;
Product
product2
=
director
.
getBProduct
(
)
;
product2
.
showProduct
(
)
;
}
}
|
建造者模式的優勢 this
首先,建造者模式的封裝性很好。使用建造者模式能夠有效的封裝變化,在使用建造者模式的場景中,通常產品類和建造者類是比較穩定的,所以,將主要的業務邏輯封裝在導演類中對總體而言能夠取得比較好的穩定性。 spa
其次,建造者模式很容易進行擴展。若是有新的需求,經過實現一個新的建造者類就能夠完成,基本上不用修改以前已經測試經過的代碼,所以也就不會對原有功能引入風險。 設計
建造者模式與工廠模式的區別 htm
咱們能夠看到,建造者模式與工廠模式是極爲類似的,整體上,建造者模式僅僅只比工廠模式多了一個「導演類」的角色。在建造者模式的類圖中,假如把這個導演類看作是最終調用的客戶端,那麼圖中剩餘的部分就能夠看做是一個簡單的工廠模式了。 對象
與工廠模式相比,建造者模式通常用來建立更爲複雜的對象,由於對象的建立過程更爲複雜,所以將對象的建立過程獨立出來組成一個新的類——導演類。也就是說,工廠模式是將對象的所有建立過程封裝在工廠類中,由工廠類向客戶端提供最終的產品;而建造者模式中,建造者類通常只提供產品類中各個組件的建造,而將具體建造過程交付給導演類。由導演類負責將各個組件按照特定的規則組建爲產品,而後將組建好的產品交付給客戶端。
總結
建造者模式與工廠模式相似,他們都是建造者模式,適用的場景也很類似。通常來講,若是產品的建造很複雜,那麼請用工廠模式;若是產品的建造更復雜,那麼請用建造者模式。
相關參考:建造者模式