三分鐘帶您搞懂建造者模式

2022-09-15 09:18:10 字數 2459 閱讀 6293

建造者模式(builder),將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

建造者模式有兩重含義:

1 將乙個物件的使用和建立過程分離,這樣使用者在使用這個物件的時候,就不需要關心該物件的具體建立過程和細節。

2 將物件建立的步驟抽象出來,再建立其他建立步驟相同的物件時,只需要依賴這個抽象(前提是這個物件的建造順序是穩定的)

通過上圖可以看出,建造者模式中的角色有4類:

director:指揮者,與客戶端進行溝通,封裝物件建立過程

builder:建立物件各個步驟的抽象

concretebuilder:實現抽象,進行具體的操作

product:被建立的物件

這裡舉乙個生產共享單車的例子,我們通過建造者模式,建立膜拜和ofo兩種單車。

這裡單車就是product,兩種不同種類的單車對應著conretebuilder,生產單車的步驟被抽象到了builder中。 director負責與客戶端進行互動,封裝單車的生產過程。

/**

* 單車.

* *

@author

jialin.li

* @date 2019-12-30 15:37 */

public

class

bike

public

void

setpaint(string paint)

public

void

settheme(string theme)

@override

public

string tostring() ';}}

/**

* 建造者,生產單車步驟的抽象(胡亂寫的步驟...).

* *

@author

jialin.li

* @date 2019-12-30 15:29 */

public

inte***ce

builder

/**

* 指揮者.

* *

@author

jialin.li

* @date 2019-12-30 15:44 */

public

class

director

}

/**

* 膜拜單車

* *

@author

jialin.li

* @date 2019-12-30 15:35 */

public

class mobikebuilder implements

builder

@override

public

void

installtire()

@override

public

void

spraypaint()

@override

public

void

theme()

@override

public

bike getproduct()

}

/**

* ofo單車

* *

@author

jialin.li

* @date 2019-12-30 15:44 */

public

class ofobuilder implements

builder

@override

public

void

installtire()

@override

public

void

spraypaint()

@override

public

void

theme()

@override

public

bike getproduct()

}

/**

* 客戶端.

* *

@author

jialin.li

* @date 2019-12-30 15:50 */

public

class

main

}

bike

bike

期待您的關注、推薦、收藏,同時也期待您的糾錯和批評。

三分鐘搞懂CSS定位

css定位是css中比較基礎的一部分,前端必須要掌握。本文重點是position的屬性和sticky。css定位即允許元素可以出現在相對正常位置外的其它位置,實現對元素位置控制的效果。css定位基本分為三種定位 普通文件流 浮動和絕對定位。普通文件流即按照html的定義順序完成排布,塊級元素就從上往...

沉默三分鐘

網上見此真情之文,藉以自表 原文 http www.hecaitou.net p 3018 沉默三分鐘是心祭。那麼多年了,國旗終於為平民而降。那麼多天了,全民哀悼終於實現。與此同時,火炬停止傳遞,因為這不是乙個歡慶的時刻。很多年後回顧2008年,我 也許寧可它從日曆中消失。還沒有哪一年和今年一樣,才...

《每天感恩三分鐘》

每天感恩三分鐘 有位104歲的老太太耳聰目明,老而彌堅。有人向她請教長壽秘訣,老太太笑了 我有一帖靈丹妙藥,那就是每天化三分鐘時間感恩。她說,化一分鐘感恩父母 丈夫 兒女 鄰居和陌生人 一分鐘感恩大自然給予的種種關懷和體貼 一分鐘感恩每乙個祥和 溫暖和快樂的日子 感恩使她心裡永遠流淌著幸福的泉水,有...