这是我要解决的一般问题:
这似乎是“战略模式”的完美案例,但不确定如何最好地在Go中实现。
一般而言;不要迷失在构建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()
}
…对您的工人。
@@ madhan您可以制造战略工厂。然后从配置中传递策略名称,工厂将创建所需策略的实例。可以使用switch或map [string] Strateger。
实现工厂。