学习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语言之策略模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式-策略模式(Go语言描写叙述)

设计模式-适配器模式(Go语言描写叙述)

设计模式学习笔记 之 策略模式

设计模式学习---策略模式

接口抽象类应用之策略模式学习

IOS之Objective-C学习 策略模式