設計模式 建造者模式

2021-08-28 07:50:55 字數 2024 閱讀 6688

建造者模式是一種比較常用的設計模式,做個簡單的總結;文章會先介紹下基本的概念,以及組成部分,最後通過例子來說明具體的使用過程; 

1.概念    

建造者模式主要針對複雜的物件的構建過程,將乙個複雜物件的構建和表示分離;按自己的理解就是最終生產的產品有共同的組成部分,但是具體的每個部分有很多變化,所以會抽象出一些共同的部分,然後定義不同的builder去具體的實現;比如,汽車這個產品,都有發動機,輪胎,方向盤等部分組成,不同的車,這些部分都是不一樣的;

2.組成部分

借用網上的乙個圖,如下所示

這裡面的指責分工:

1>抽象的builder類:提供產品的各個組成部分的抽象介面,並且返回產品的乙個介面

2>concretebuilder類:具體的builder,根據不同的產品,定義不同的builder去實現產品的每個組成部分的細節

3>product類:最終的產品類,包含多個組成部分;

4>director:導演類,通過構造注入builder,負責物件的具體的建立工作

3.例項

下面以生成自行車為例子來說明

1>抽象的builder類

這裡提供自行車的各個組成部分的抽象介面,還有乙個介面是返回最終的產品;

public inte***ce bikebuilder
2>concretebuilder

這裡我們需要生成兩種自行車,膜拜和ofo,所以會由兩個類,都會實現上面定義的bikebuilder介面

public class mobikebuilder implements bikebuilder 

@override

public void buildframe()

@override

public void buildgps()

@override

public bike getbike()

@override

public string tostring() ';}}

public class ofobikebuilder implements bikebuilder 

@override

public void buildframe()

@override

public void buildgps()

@override

public bike getbike()

@override

public string tostring() ';}}

3>product

這裡的產品是bike,具體內容如下

public class bike 

public void settyre(string tyre)

public string getframe()

public void setframe(string frame)

public string getgps()

public void setgps(string gps)

@override

public string tostring() ';}}

4>director類

導演類,具體負責自行車的生產工作

public class engineeringdepartment 

// 指導組裝單車

public void construct()

}

測試方法

public static void main(string args)
總結:當構建的物件比較複雜,而每個部分又是可變的時候,我們可以考慮使用構造者設計模式,將物件的構造過程和具體的構造方式進行分離,便於程式的可擴充套件性;

設計模式 建造者模式

在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...

設計模式建造者模式

今天看了乙個設計模式。總結下,以免忘了。如何引入建造者模式的呢?作者舉了個例子。建造小人。當然需要 頭,左手,右手,左腳,右腳,軀幹。建造的過程使用 使用類裡面的方法就行了。但是如果需要乙個胖的小人,乙個瘦的小人呢?就需要重新構造乙個胖人類,乙個瘦人類。當然 使用者還需要自己處理構造的過程。這樣 就...

設計模式 建造者模式

定義 將乙個複雜的物件的構建與它的表示分離,是的同樣的構建過程可以建立不同的表示。包括的要素 1 產品類 2 抽象建造者或者介面 3 建造者 4 導演類 建造者模式的優點 首先,建造者模式的封裝很好,使用建造者模式可以有效地封裝變化,注意在使用建造者模式的場景中,一般產品類和建造者介面是比較穩定的,...