golang 设计模式之创建者模式

72 阅读1分钟
//构建者接口
type Builder interface {
   BuildCpu()
   BuildDisk()
   BuildRom()
}
//超级电脑构建者对象实现啊

type SuperComputer struct{
   Name string
}
func (t *SuperComputer)BuildCpu(){
   fmt.Println("超级cpu",t.Name)
}
func (t *SuperComputer)BuildDisk(){
   fmt.Println("超级硬盘",t.Name)
}
func (t *SuperComputer)BuildRom(){
   fmt.Println("超级内存",t.Name)
}

//普通电脑对象

type PlainComputer struct{
   Name string
}
func (t *PlainComputer)BuildCpu(){
   fmt.Println("普通cpu",t.Name)
}
func (t *PlainComputer)BuildDisk(){
   fmt.Println("普通硬盘",t.Name)
}
func (t *PlainComputer)BuildRom(){
   fmt.Println("普通内存",t.Name)
}

type Drictor struct {
   builder Builder
}
func NewDrictor(b Builder) *Drictor{
   return &Drictor{
      builder:b,
   }
}
func(t *Drictor)Construct(){

   t.builder.BuildCpu()
   t.builder.BuildDisk()
   t.builder.BuildRom()
}

func main() {
   //超级电脑
   super :=&SuperComputer{
      Name:"超级无敌电脑",
   }
   NewDrictor(super).Construct()

   //普通电脑
   plain := &PlainComputer{
      Name:"现在的联想普通电脑",
   }
   NewDrictor(plain).Construct()

}