PHP設計模式之建造者模式

2021-10-07 17:35:19 字數 3584 閱讀 6905

建造者模式,也可以叫做生成器模式,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 寫了個小例子,加深一下理解。主要參考 大話設 計模式 和...