十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
直接代码:
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网页空间、营销软件、网站建设、水富网站维护、网站推广。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