建造者模式,也可以叫做生成器模式,builder這個詞的原意就包含了建築者、開發者、建立者的含義。很明顯,這個模式又是乙個建立型的模式,用來建立物件。那麼它的特點是什麼呢?從建築上來說,蓋房子不是一下子就馬上能把乙個房子蓋好的,而是通過一磚一瓦搭建出來的。乙個房子不僅有磚瓦,還有各種管道,各種電線等等,由它們各個不部分共同組成了一棟房子。可以說,建造者模式就是這樣非常形象的由各種部件來組成乙個物件(房子)的過程。
gof定義:將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示
gof類圖
**實現
class
product
public
function
show()
: void
}}
產品類,你可以把它想象成我們要建造的房子。這時的房子還沒有任何內容,我們需要給它添磚加瓦。
inte***ce
builder
class
concretebuilder1
implements
builder
public
function
buildparta()
: void
public
function
buildpartb()
: void
public
function
getresult()
: product
}class
concretebuilder2
implements
builder
public
function
buildparta()
: void
public
function
buildpartb()
: void
public
function
getresult()
: product
}
建造者抽象及其實現。不同的開發商總會選用不同的品牌材料,這裡我們有了兩個不同的開發商,但他們的目的一致,都是為了去蓋房子(product)。
class
director
}
構造器,用來呼叫建造者進行生產。沒錯,就是我們的工程隊。它來選取材料並進行建造。同樣的工程隊,可以接不同的單,但蓋出來的都是房子。只是這個房子的材料和外觀不同,大體上的手藝還是共通的。
$director
=new
director()
;$b1
=new
concretebuilder1()
;$b2
=new
concretebuilder2()
;$director
->
construct
($b1);
$p1=
$b1-
>
getresult()
;$p1
->
show()
;$director
->
construct
($b2);
$p2=
$b2-
>
getresult()
;$p2
->
show()
;
最後看看我們的實現,是不是非常簡單,準備好工程隊,準備好不同的建造者,然後交給工程隊去生產就好啦!!
大家都知道,手機組裝是一件複雜的過程,於是,不同型號的手機我們都有對應的圖紙(builder),將圖紙和配件交給流水線上的工人(director),他們就會根據圖紙使用配件來生產出我們所需要的各種不同型號的手機(product)。很明顯,我們都是偉大的建造者,為我們的產業添磚加瓦!!!
完整**:
前面說過android中有很多dialog對話方塊都會用建造者模式來實現,作為一家手機廠的老闆,定製化的android系統也是非常重要的乙個部分。就像x公尺一樣,從miui入手,先拿下了軟體市場,讓大家覺得這個系統非常好用,然後再開始開發手機。這就說明軟硬體的確是現代手機的兩大最重要的組成部分,缺了誰都不行。這回,我們就用建造者模式簡單的實現一套對話方塊元件吧!
對話方塊類圖完整原始碼:
<?php
class
dialog
public
function
addbuttons
($button
)public
function
settitle
($title
)public
function
setcontent
($content
)public
function
showdialog()
}inte***ce
builder
class
dialogbuilder
implements
builder
public
function
buildattribute
($attr
)public
function
buildbutton
($button
)public
function
buildtitle
($title
)public
function
buildcontent
($content
)public
function
getdialog()
}class
dialogdirector
}class
modaldialogdirector
}$d1
=new
dialogdirector()
;$d1
->
construct
('視窗1'
,'確認要執行操作a嗎?')-
>
getdialog()
->
showdialog()
;$d2
=new
modaldialogdirector()
;$d2
->
construct
('視窗2'
,'確認要執行操作b嗎?')-
>
getdialog()
->
showdialog()
;
說明PHP設計模式之建造者模式
建造者模式用於將複雜物件簡單化,乙個複雜的物件分解成多個更簡單的物件,然後將簡單物件組合起來就生成了複雜物件。created by phpstorm.user hzh date 2018 8 10 time 0 24 inte ce item inte ce packing class implem...
PHP設計模式 建造者模式
建造者模式主要在於建立一些複雜的物件。將乙個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示的設計模式 產品本身 class product public function add part 建造者抽象類 abstract class builder 具體建造者 實現其具體方法 cl...
設計模式之建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟 設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設 計模式 和...