91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go建造者模式,【go設計模式】

發布時間:2020-07-27 05:21:06 來源:網絡 閱讀:649 作者:fangnux 欄目:軟件技術

直接代碼:

ackage main

import "fmt"

//現在有教室和宿舍,教室兩扇們,窗戶高兩米, 宿舍一扇門,窗戶高一米

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()
    //同理我們需要一個客廳一個門沒有窗戶,就可以寫一個客廳的builder
    //此處例子很簡單,而實際中build函數可能處理很復雜的事,通過builder模式可以把具體的
    //實例與創建過程分開,如此容易擴展與替換創建過程
}


github長期更新:
https://github.com/fanux/gopatterns
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲松县| 安西县| 右玉县| 福泉市| 浦县| 筠连县| 新兴县| 平潭县| 讷河市| 固阳县| 华亭县| 沾化县| 车险| 南阳市| 金塔县| 新蔡县| 景泰县| 绥阳县| 永登县| 华宁县| 琼中| 珲春市| 南部县| 改则县| 英德市| 元阳县| 东源县| 栾川县| 锡林郭勒盟| 大庆市| 灵丘县| 平罗县| 安阳县| 通辽市| 壤塘县| 金寨县| 屏东县| 潼南县| 清徐县| 金乡县| 东乡|