package main
import "fmt"
type Request struct{
requestType string
requestNum int
}
type Managner interface{
SetNext(next Managner)
handleRequest(request Request)
}
//这里面是放函数签名的
//____——————————————————————————————————————————————————
type CommonManager struct{
manager Managner
}
func(this *CommonManager)SetNext(next Managner){
this.manager=next
}
func(this *CommonManager)handleRequest(request Request){
switch request.requestType{
case "请假":
if request.requestNum < 2{
fmt.Println("common managner 已批准")
} else{
fmt.Println("提交给了major manager了")
this.manager.handleRequest(request)
}
case "加薪":
}
}
//____——————————————————————————————————————————————————
type MajorManager struct{
manager Managner
}
func(this *MajorManager)SetNext(next Managner){
this.manager=next
}
func(this *MajorManager)handleRequest(request Request){
switch request.requestType{
case "请假":
if request.requestNum < 4{
fmt.Println("major managner 已批准")
} else{
fmt.Println("提交给了general manager了")
this.manager.handleRequest(request)
}
case "加薪":
}
}
//____——————————————————————————————————————————————————
type GeneralManager struct{
manager Managner
}
func(this *GeneralManager)SetNext(next Managner){
this.manager=next
}
func(this *GeneralManager)handleRequest(request Request){
switch request.requestType{
case "请假":
if request.requestNum < 4 {
fmt.Println("general managner 已批准")
}
case "加薪":
}
}
func main(){
commonManager:=CommonManager{}
majorManager:=MajorManager{}
generalManager:=GeneralManager{}
commonManager.SetNext(&majorManager)
majorManager.SetNext(&generalManager)
request:=Request{
requestType: "请假",
requestNum: 8,
}
commonManager.handleRequest(request)
}
07-04
108
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交