为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中实现策略模式?

如何在 Go 中实现策略模式?

Go
芜湖不芜 2021-06-15 21:26:08
这是我试图解决的一般问题:一组包从一个来源收集数据并将其发送到多个渠道。第二组包从多个渠道收集数据并将其写入一个来源。这组包需要转换多种格式的数据。这似乎是 Strategy Pattern 的完美案例,但我不确定如何最好地使其在 Go 中工作。
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

一般来说; 不要迷失在构建 Go 应用程序的模式和协议中。该语言使其易于表达和直截了当。大多数情况下,定义可靠的接口使一切都足够灵活。


不过,这里有一个 Go 中策略模式的例子:


为策略的行为定义一个接口:


type PackageHandlingStrategy interface {

    DoThis()

    DoThat()

}

实施该策略:


type SomePackageHandlingStrategy struct {

    // ...

}


func (s *SomePackageHandlingStrategy) DoThis() {

    // ...

}


func (s *SomePackageHandlingStrategy) DoThat() {

    // ...

}

然后,要么嵌入......


type PackageWorker struct {

    SomePackageHandlingStrategy

}


func (w *PackageWorker) Work() {

    w.DoThis()

    w.DoThat()

}

……或者通过策略……


type PackageWorker struct {}


func (w *PackageWorker) Work(s PackageHandlingStrategy) {

    s.DoThis()

    s.DoThat()

}

……给你的工人。


查看完整回答
反对 回复 2021-06-21
  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信