建造者模式-golang

本文通过一个具体的Golang代码示例介绍了建造者模式的应用。示例中创建了一个菜单系统,菜单包含不同的套餐组合,每个套餐由多个项目组成并计算总价。通过此模式实现了对象的逐步构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在此篇中,我们将练习实现建造者模式。

其中例子大致是菜鸟教程的例子翻版,此处采用golang实现。对于具体介绍大家可以去菜鸟教程学习(http://www.runoob.com/design-pattern/builder-pattern.html)


package main

import "fmt"

func main() {
   menu := Menu{}
   HotDog := PackageItem{Name:"hotdog",Price:10.00}
   Coke := PackageItem{Name:"code",Price:20.00}
   m := Package{}
   m.Name = "组合1"
   m.Pi = append(m.Pi, HotDog)
   m.Pi = append(m.Pi, Coke)
   m.AllPrice()
   menu.P = append(menu.P,m)

   mm := Package{}
   mm.Name = "组合2"
   mm.Pi = append(mm.Pi, HotDog)
   mm.Pi = append(mm.Pi, HotDog)
   mm.Pi = append(mm.Pi, Coke)
   mm.AllPrice()
   menu.P = append(menu.P,mm)


   menu.Show()
}

//菜单
type Menu struct {
   P []Package
}

//菜单展示
func (m Menu) Show()  {
   for _,f := range m.P {
      fmt.Print(f.Name)
      fmt.Print(":")
      fmt.Println(f.Price)
      f.Show()
   }
}

//菜单的套餐
type Package struct {
   Name string
   Price float32
   Pi []PackageItem
}

//计算该套餐的总价格
func (p *Package) AllPrice()  {
   for _,f := range p.Pi {
      p.Price = p.Price + f.Price
   }
}

//展示该套餐的内容
func (m Package) Show()  {
   for _,f := range m.Pi {
      fmt.Print(f.Name)
      fmt.Print(":")
      fmt.Print(f.Price)
      fmt.Print(":")
      fmt.Println(f.Pake.Pake())
   }
}

//套餐的内容
type PackageItem struct {
   Name string
   Price float32
   Pake Wargger
}

//包装
type Wargger struct {
}

func (w Wargger) Pake() string {
   return "Wargger"
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值