责任链模式(chain of responsibility)是赫赫有名的GoF书中描述的23个经典模式之一。
这个模式通过将请求的处理者组织成一个链条,有效避免请求发送者与多个请求处理者耦合在一起。
package main
import (
"fmt"
)
type Handler func([]int) bool
func IsQiDui(card []int) bool {
fmt.Println("判断七对") //这里做具体的牌型判断
return true
}
func IsShiSanYao(card []int) bool {
fmt.Println("判断十三幺") //这里做具体的牌型判断
return true
}
func judegeChain(card []int, functions []Handler) []int {
res := make([]int, 0)
for _, f := range functions {
ok := f(card)
if ok {
res = append(res, 1)
}
}
return res
}
func main() {
card := []int{1, 2, 3, 4, 5}
//职责链数组
handler := []Handler{IsQiDui, IsShiSanYao}
res := judegeChain(card, handler)
fmt.Println("res is", res)
}