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

这是我试图解决的一般问题:

  1. 一组包从一个来源收集数据并将其发送到多个渠道。

  2. 第二组包从多个渠道收集数据并将其写入一个来源。这组包需要转换多种格式的数据。

这似乎是 Strategy Pattern 的完美案例,但我不确定如何最好地使其在 Go 中工作。


芜湖不芜
浏览 184回答 2
2回答

Helenr

一般来说; 不要迷失在构建 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()}……给你的工人。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go