实现策略模式和模板方法模式示例,添加支付策略和烹饪流程,增强代码可读性
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
/*
|
||||
实例:
|
||||
汤宝宝炒西红柿鸡蛋。
|
||||
*/
|
||||
|
||||
// 抽象接口
|
||||
type Dish interface {
|
||||
PrepareIngredients()
|
||||
Cook()
|
||||
Serve()
|
||||
}
|
||||
|
||||
// 模板方法
|
||||
func DoCooking(dish Dish) {
|
||||
fmt.Print("第一步:")
|
||||
dish.PrepareIngredients()
|
||||
fmt.Print("第二步:")
|
||||
dish.Cook()
|
||||
fmt.Print("第三步:")
|
||||
dish.Serve()
|
||||
}
|
||||
|
||||
// 具体实现
|
||||
type TomatoEggDish struct{}
|
||||
|
||||
func (t *TomatoEggDish) PrepareIngredients() {
|
||||
fmt.Println("准备西红柿和鸡蛋;")
|
||||
}
|
||||
|
||||
func (t *TomatoEggDish) Cook() {
|
||||
fmt.Println("炒西红柿和鸡蛋;")
|
||||
}
|
||||
|
||||
func (t *TomatoEggDish) Serve() {
|
||||
fmt.Println("装盘,西红柿鸡蛋炒好了。")
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println("========== 模板方法模式 ==========")
|
||||
dish := &TomatoEggDish{}
|
||||
DoCooking(dish)
|
||||
fmt.Println()
|
||||
fmt.Println("======== 模板方法模式结束 ========")
|
||||
}
|
||||
Reference in New Issue
Block a user