Composite(組合模式)
Code
class TrainOrder {
create () {
console.log('创建火车票订单')
}
}
class HotelOrder {
create () {
console.log('创建酒店订单')
}
}
class TotalOrder {
constructor () {
this.orderList = []
}
addOrder (order) {
this.orderList.push(order)
return this
}
create () {
this.orderList.forEach(item => {
item.create()
})
return this
}
}
// 可以在购票网站买车票同时也订房间
let train = new TrainOrder()
let hotel = new HotelOrder()
let total = new TotalOrder()
total.addOrder(train).addOrder(hotel).create()
//"创建火车票订单"
//"创建酒店订单"
優點
將物件組合成樹狀結構,以表示整體部份的層次結構
通過物件的多型表現,使得用戶對單個物件或組合物件使用具有一致性
場景
表示物件-整體層次結構
希望用戶忽略組合物件和單個物件的不同,用戶將統一的使用組合結構中的所有物件
缺點
通過組合模式創建太多物件,會造成維護的負擔
Last updated
Was this helpful?