这是我试图解决的一般问题:一组包从一个来源收集数据并将其发送到多个渠道。第二组包从多个渠道收集数据并将其写入一个来源。这组包需要转换多种格式的数据。这似乎是 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()
}
……给你的工人。
- 2 回答
- 0 关注
- 183 浏览
添加回答
举报
0/150
提交
取消