封裝乙個產品的構造過程,並允許按步驟構造
需要經過多個步驟建立的物件,如實際生活中的點餐流程,管理系統中的匯出框架等
此處以點餐流程為例
入口**
package com.glt.designpattern.builder;
public
class
initmain
}
建造者類
package com.glt.designpattern.builder;
/** * 建造者物件
* 生成最終物件的建造者
*/public
class
builder
/** * 午餐
*/public meal lunch()
/** * 晚餐
*/public meal dinner()
}
建造者產品類
package com.glt.designpattern.builder;
/** * 建造者物件
* 生成最終物件的建造者
*/public
class
builder
/** * 午餐
*/public meal lunch()
/** * 晚餐
*/public meal dinner()
}
子項介面
package com.glt.designpattern.builder;
/** * 每一餐需要的子項
*/public
inte***ce
item
食品物件
package com.glt.designpattern.builder;
/** * 食品項
*/public
abstract
class
food
implements
item
}
飲品物件
package com.glt.designpattern.builder;
/** * 飲品項
*/public
abstract
class
drink
implements
item
}
具體食品類
package com.glt.designpattern.builder;
/** * 食品類-麵包
*/public
class
breadfood
extends
food
@override
public
float
price()
}
package com.glt.designpattern.builder;
/** * 食品類-披薩
*/public
class
pizzafood
extends
food
@override
public
float
price()
}
具體飲品類
package com.glt.designpattern.builder;
/** * 飲品類-啤酒
*/public
class
beerdrink
extends
drink
@override
public
float
price()
}
package com.glt.designpattern.builder;
/** * 飲品類-水
*/public
class
waterdrink
extends
drink
@override
public
float
price()
}
輸出結果:
名稱:麵包,水優點:**:4.0
包裝:盒子,瓶子
名稱:披薩,啤酒
**:8.0
包裝:盒子,瓶子
名稱:麵包,啤酒
**:6.0
包裝:盒子,瓶子
process finished with exit code 0
建造者在產品的每個步驟都可以自由組合,擴充套件性強缺點:
內部步驟變化複雜,會產生很多類與工廠模式區別是此模式會有多個步驟,並且會關注每個步驟的順序
設計模式 生成器模式
前兩個文章我介紹了工廠方法模式和抽象工廠模式,這次我來講一些生成器模式。生成器模式我也用的比較多。5個建立型模式裡面,我比較喜歡用工廠方法模式,生成器模式和單例模式。意圖將乙個複雜物件的構建與它的表示分開,使得同樣的構建過程可以建立不同的表示。結構圖 一眼看去是不是和抽象工廠模式有點像?是啊,我也覺...
設計模式 生成器模式
定義 將乙個複雜的物件,分成多分,使同樣的構建過程,能有不同的表示,這樣的設計模式被稱為建造者模式。舉例說明 李嘉誠的遺囑執行 財產 產品角色 李嘉誠擁有眾多複雜的財產框架,這裡以現金與物品入例。遺囑 建造者 相當於建造者,分配現金與物品。具體遺囑 具體建造者 1.給大兒子的財產分配,2,給小兒子的...
設計模式之 生成器模式
在產品結構比較複雜,構造過程比較繁瑣,一次性構造比較難的時候,我們可以採取分而治之的原則,將產品元件化,每個元件由專門的廠商來生產,最後的產品指派給制定的車間進行最後裝配.這種方式其實是現代製造業的一種典型的模式.比如汽車,飛機的製造等.這樣做的好處是 1.產品的部件由專門的生產廠商來生產,這樣分工...