学习Go语言之策略模式
Posted shi2310
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Go语言之策略模式相关的知识,希望对你有一定的参考价值。
1.首先定义接口,所有的策略都是基于一套标准,这样策略(类)才有可替换性。声明一个计算策略接口
1 package strategy 2 3 type ICompute interface 4 Compute(a, b int) int 5
2.接着两个接口实现类。复习golang语言实现接口是非侵入式设计。
1 package strategy 2 3 type Add struct 4 5 6 func (p *Add) Compute(a, b int) int 7 return a + b 8
1 package strategy 2 3 type Sub struct 4 5 6 func (p *Sub) Compute(a, b int) int 7 return a - b 8
3.声明一个策略类。复习golang中规定首字母大写是public,小写是private。如果A,B改为小写a,b,在客户端调用时会报unknown field ‘a‘ in struct literal of type strategy.Context
1 package strategy 2 3 var compute ICompute 4 5 type Context struct 6 A, B int 7 8 9 // 用户端必须自己知道使用什么策略 10 func (p *Context) SetContext(s string) 11 switch s 12 case "+": 13 compute = new(Add) 14 break 15 case "-": 16 compute = new(Sub) 17 break 18 19 20 21 func (p *Context) Result() int 22 return compute.Compute(p.A, p.B) 23
4.客户端调用
1 package main 2 3 import ( 4 "fmt" 5 "myProject/StrategyDemo/strategy" 6 ) 7 8 func main() 9 c := strategy.ContextA: 15, B: 5 10 c.SetContext("+") 11 fmt.Println(c.Result()) 12
以上是关于学习Go语言之策略模式的主要内容,如果未能解决你的问题,请参考以下文章