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

文章名称:go建造者模式,【go设计模式】
分享链接:http://bzwzjz.com/article/jcojsg.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站制作 成都网站设计 高端网站建设 企业网站建设 成都网站制作 高端品牌网站建设 重庆企业网站建设 网站建设方案 网站建设改版 成都网站制作 成都商城网站建设 企业网站设计 成都网站设计 高端网站设计 上市集团网站建设 专业网站建设 网站建设公司 成都做网站建设公司 成都网站制作 成都网站设计 成都网站建设 手机网站制作