Builder 建造者模式

2021-04-18 23:58:29 字數 1316 閱讀 7255

模式定義

builder模式很好地將乙個複雜物件的建立與該物件內部的各個部件的組裝分離開來。它和 abstract factory模式有相似的地方,但是abstract factory主要提供了乙個建立一些列相關或相互依賴的物件的介面,無需知道指定他們具體的類(生產者),而builder模式著重於部件的組裝和物件建立的關係。

使用範圍

使用方法

考察builder的類圖

director好比是乙個發號施令者,它需要完成乙個物件product。可這個物件有不同的組裝方式,即部件part可以不同,部件之間的關係也可以不同。完成這個組裝方式的人可以有多個不同的concretebuilder,他們實施不同的部件與部件之間的組裝,最後交付給director乙個完整的product。

舉例說明

來拿開發商開發一套房子來作為例子。開發商好比乙個direcor,它的唯一目標是建造contruct乙個房子,但它本身不建設房子,任務是交由建築商builder完成。

public class director 

}

abstracthousebuilder好比乙個抽象概念的建築商,建築一套房子必須完成如下的部件組裝過程:design(), build()和最後的decorate()。

public abstract class abstracthousebuilder 

commonhousebuilder好比是乙個專門建設普通住宅的建築商,注意它沒有具體的decorate()方法主體。

public class commonhousebuilder extends abstracthousebuilder

public void build()

public void decorate()

}

goodhousebuilder是乙個專門建設精裝修高檔住宅的建築商,部件的構造方法和commonhousebuilder不同,同時它還有decorate()方法。此處它和commonhousebuilder的區別在於組裝方式的不同。

public class goodhousebuilder extends abstracthousebuilder

public void build()

public void decorate()

}

builder模式的類結構圖為:

客戶端的使用方法為:

public class client 

}

建造者模式(Builder)

工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立復合物件,所謂復合物件就是指某個類具有不同的屬性,其實建造者模式就是前面抽象工廠模式和最後的test結合起來得到的。我們看一下 還和前面一樣,乙個sender介面,兩個實現類mailsender和smssende...

建造者模式(Builder)

4 建造者模式 builder 工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立復合物件,所謂復合物件就是指某個類具有不同的屬性,其實建造者模式就是前面抽象工廠模式和最後的test結合起來得到的。我們看一下 建造者類如下 抽象產品類,使用了模板方法模式,不同產...

建造者模式 Builder

名字 建造者模式 builder 意圖 b 將乙個複雜的構建與其表示相分離 b 得同樣的構建過程可以建立不同的表示.動機 軟體系統中,有時候面臨著 乙個複雜物件 的建立工作,其通常由各個部分的子物件用一定的演算法構成 由於需求的變化,這個複雜物件的各個部分經常面臨劇烈變化,但將其組合在一起的演算法卻...