目录
???????模板模式(Template Pattern)定义了一个算法的骨架,并允许子类为其中的一些步骤提供具体实现。在模板模式中,模板定义了算法的框架,具体步骤则由子类实现。这种模式通过把不变的行为放在超类中,去除子类中的重复代码,提高代码复用性。
(1)优点:
(2)缺点:
package main
import "fmt"
// 咖啡店的点单系统,针对不同类型的咖啡(美式咖啡、拿铁咖啡),希望根据不同类型的咖啡来制作和提供服务。
// 抽象类
type CoffeeMaker interface {
Prepare()
Brew()
Serve()
}
// 具体类:美式咖啡
type Americano struct{}
func (a *Americano) Prepare() {
fmt.Println("准备美式咖啡的材料")
}
func (a *Americano) Brew() {
fmt.Println("冲泡美式咖啡")
}
func (a *Americano) Serve() {
fmt.Println("提供美式咖啡")
}
// 具体类:拿铁咖啡
type Latte struct{}
func (l *Latte) Prepare() {
fmt.Println("准备拿铁咖啡的材料")
}
func (l *Latte) Brew() {
fmt.Println("冲泡拿铁咖啡")
}
func (l *Latte) Serve() {
fmt.Println("提供拿铁咖啡")
}
// 客户端代码
func main() {
americano := &Americano{}
americano.Prepare()
americano.Brew()
americano.Serve()
latte := &Latte{}
latte.Prepare()
latte.Brew()
latte.Serve()
}