Java設計模式之 建造者模型,簡單易於理解

建造者模型

一、概念:

建造者模式是設計模式的一種,將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
實用範圍:
1 當創建複雜對象的算法應該獨立於該對象的組成部分以及它們的裝配方式時。
2 當構造過程必須允許被構造的對象有不同表示時。
摺疊角色

在這樣的設計模式中,有以下幾個角色:

在這裏插入圖片描述
1 builder:爲創建一個產品對象的各個部件指定抽象接口。

2 ConcreteBuilder:實現Builder的接口以構造和裝配該產品的各個部件,定義並明確它所創建的表示,並 提供一個檢索產品的接口。

3 Director:構造一個使用Builder接口的對象。

4 Product:表示被構造的複雜對象。ConcreteBuilder創建該產品的內部表示並定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的接口。

二、代碼解析

1、以建造房子爲例,首先建築一個房子對象,裏面有三個屬性
在這裏插入圖片描述
2、建造一個房子建築者接口,裏面包括建房子要建的三種屬性的方法。
在這裏插入圖片描述
3、創建一個類去實現建造者接口
在這裏插入圖片描述
在這裏插入圖片描述
4、引進一個設計者,簡化客戶端的調用,這個設計者負責設計建造房子的操作過程和業務處理。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
5、現在創建一個客戶端,實現建造房子的過程,先定義一個方法的建造者,再定義一個設計者,直接調用實現建房子的過程。
在這裏插入圖片描述

三、建造者模式的優缺點

建造者模式的優點:
1、客戶端不必知道產品內部的組成細節,將產品本身與產品的建造過程解耦,使得相同的建造過程可以建造不同的產品對象。
2、每個具體建築者對象都是獨立的,與其他的具體建造者無關,因此很方便地替換具體建築者或者增加新的具體建造者。
3、可以更加精細地控制產品的建造過程。將複雜產品的創建步驟分解在不同的方法中,使得創建過程更加清晰,也更加方便使用程序來控制創建過程。
4、增加新的具體者無需修改原有類庫的代碼,系統擴展方便,符合開閉原則。
建造者模式的缺點:
1、產品之間差異性很大的情況:建造者橫式所創建的產品一般具有較多的共同點,其組成部分相似,如果產品之間的差異性很大,則不適合使用建造者模式,因此其使用範圍受到一定的限制。
2、產品內部變化很複雜的情況:如果產品的內部變化複雜,可能會導致需要定義很多具體建造者類來實現這種變化,導致系統變得很底大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章