Kev*_*Dog 8 design-patterns strategy-pattern go
这是我要解决的一般问题:
这似乎是战略模式的完美案例,但我不确定如何最好地在Go中完成这项工作.
thw*_*hwd 19
一般来说; 不要迷失在构建Go应用程序的模式和协议中.这种语言使表达和直接变得容易.大多数时候定义可靠的接口使得一切都足够灵活.
不过,这里是Go中策略模式的一个例子:
定义策略行为的界面:
type PackageHandlingStrategy interface {
DoThis()
DoThat()
}
Run Code Online (Sandbox Code Playgroud)
实施该战略:
type SomePackageHandlingStrategy struct {
// ...
}
func (s *SomePackageHandlingStrategy) DoThis() {
// ...
}
func (s *SomePackageHandlingStrategy) DoThat() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后,要么嵌入......
type PackageWorker struct {
SomePackageHandlingStrategy
}
func (w *PackageWorker) Work() {
w.DoThis()
w.DoThat()
}
Run Code Online (Sandbox Code Playgroud)
......或者通过战略......
type PackageWorker struct {}
func (w *PackageWorker) Work(s PackageHandlingStrategy) {
s.DoThis()
s.DoThat()
}
Run Code Online (Sandbox Code Playgroud)
......给你的工人
| 归档时间: |
|
| 查看次数: |
3663 次 |
| 最近记录: |