您好,登錄后才能下訂單哦!
直接代碼:
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。