go 건설 자 모델, [go 디자인 모델]

직접 코드:
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

좋은 웹페이지 즐겨찾기