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