This repository has been archived on 2021-09-07. You can view files and clone it, but cannot push or open issues or pull requests.
2019-02-11 10:13:35 +08:00

45 lines
847 B
Go

package main
import "fmt"
// 1. 定义抽象策略接口
type IStrategy interface {
SortList() // 对列表进行排序
}
// 2. 定义具体策略
type BubbleSortStrategy struct {}
func ( b BubbleSortStrategy) SortList() {
fmt.Println("这是冒泡排序")
}
type MergeSortStrategy struct {}
func (m MergeSortStrategy) SortList() {
fmt.Println("这是归并排序")
}
// 3. 定义上下文
type Context struct {
Strategy IStrategy // 上下文中指定的策略
}
// 定义上下文中执行策略的方法
func (c Context) Exec() {
c.Strategy.SortList()
}
// 策略模式
func main() {
var ctx Context
fmt.Println("====使用冒泡排序算法=====")
ctx = Context{Strategy:BubbleSortStrategy{}}
ctx.Exec()
fmt.Println("====使用归并排序算法=====")
ctx = Context{Strategy:MergeSortStrategy{}}
ctx.Exec()
}