直接代碼:
創(chuàng)新互聯(lián)公司專注于老河口企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。老河口網(wǎng)站建設(shè)公司,為老河口等地區(qū)提供建站服務(wù)。全流程按需開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
ackage main import "fmt" //現(xiàn)在有教室和宿舍,教室兩扇們,窗戶高兩米, 宿舍一扇門,窗戶高一米 type Room struct { doorNum int windowHeight int } func (r *Room) showRoomInfo() { fmt.Println("door num:", r.doorNum, "door windowHeight:", r.windowHeight) } type RoomBuilder interface { build() *Room } func BuildRoom(builder RoomBuilder) *Room { return builder.build() } type Cla***oomBuilder struct { } func (*Cla***oomBuilder) build() *Room { return &Room{2, 2} } type DormitoryBuilder struct { } func (*DormitoryBuilder) build() *Room { return &Room{1, 1} } func main() { room := BuildRoom(&Cla***oomBuilder{}) room.showRoomInfo() room = BuildRoom(&DormitoryBuilder{}) room.showRoomInfo() //同理我們需要一個(gè)客廳一個(gè)門沒有窗戶,就可以寫一個(gè)客廳的builder //此處例子很簡單,而實(shí)際中build函數(shù)可能處理很復(fù)雜的事,通過builder模式可以把具體的 //實(shí)例與創(chuàng)建過程分開,如此容易擴(kuò)展與替換創(chuàng)建過程 } github長期更新: https://github.com/fanux/gopatterns
分享名稱:go建造者模式,【go設(shè)計(jì)模式】
URL分享:http://www.chinadenli.net/article36/jcojsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站收錄、網(wǎng)站策劃、外貿(mào)網(wǎng)站建設(shè)、App開發(fā)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)