go 里的策略模式根据定义接口和不同对策种类来达到算法与使用人分离,从而实现代码复用:界定对策插口,包含一个方式来实行特殊操作。建立不同的思路种类,完成接口中的方法并实施不同的算法。建立前后文目标,拥有对策目标并启用其方式。
怎样在 Go 框架中应用策略模式完成代码复用
策略模式介绍
策略模式是一种设计模式,容许将算法的实现与算法的使用人分离。它提供了一种可插拔的方式去选择与采用不同的算法,而无需改动客户端编码。
Go 里的策略模式
在 Go 中,能通过定义一个接口和一组完成该接口不同种类的策略来完成策略模式。
接口定义
type Strategy interface {
DoSomething(input string) string
}
对策完成
type ConcreteStrategy1 struct {}
func (s ConcreteStrategy1) DoSomething(input string) string {
return "Concrete Strategy 1: " + input
}
type ConcreteStrategy2 struct {}
func (s ConcreteStrategy2) DoSomething(input string) string {
return "Concrete Strategy 2: " + input
}
前后文目标
前后文目标承担拥有对策目标并启用其方式。
type Context struct {
strategy Strategy
}
实战案例
考虑一个贷款计算器的实例,其中有多种运算法则来算利息。
实战编码
package main
import "fmt"
type Strategy interface {
CalculateInterest(principal float64, rate float64, years int) float64
}
type SimpleInterestStrategy struct {}
func (s SimpleInterestStrategy) CalculateInterest(principal float64, rate float64, years int) float64 {
return principal rate float64(years)
}
type CompoundInterestStrategy struct {}
func (s CompoundInterestStrategy) CalculateInterest(principal float64, rate float64, years int) float64 {
return principal math.Pow((1 + rate), float64(years)) - principal
}
type Context struct {
strategy Strategy
}
func (c Context) CalculateInterest(principal float64, rate float64, years int) float64 {
return c.strategy.CalculateInterest(principal, rate, years)
}
func main() {
simpleInterestContext := &Context{strategy: &SimpleInterestStrategy{}}
compoundInterestContext := &Context{strategy: &CompoundInterestStrategy{}}
principal := 1000.0
rate := 0.1
years := 5
simpleInterest := simpleInterestContext.CalculateInterest(principal, rate, years)
compoundInterest := compoundInterestContext.CalculateInterest(principal, rate, years)
fmt.Println("Simple Interest:", simpleInterest)
fmt.Println("Compound Interest:", compoundInterest)
}
以上就是怎样在golang框架中应用策略模式完成代码复用?的详细内容,大量请关注其他类似文章!