一般的には、 Goアプリケーションを構築するためのパターンやプロトコルに迷う必要はありません。この言語は、表現力豊かで簡単な表現を可能にします。多くの場合、堅実なインターフェースを定義することで、すべてが柔軟になります。
type SomePackageHandlingStrategy struct {
// ...
}
func (s *SomePackageHandlingStrategy) DoThis() {
// ...
}
func (s *SomePackageHandlingStrategy) DoThat() {
// ...
}
そして:
type PackageHandlingStrategy interface {
DoThis()
DoThat()
}
は、その戦略を実装します。
は戦略の行動のためのインタフェースを定義します。
それでも、ここに行くにおける戦略パターンの例を示します。 、埋め込み…
type PackageWorker struct {
SomePackageHandlingStrategy
}
func (w *PackageWorker) Work() {
w.DoThis()
w.DoThat()
}
…または戦略&hellipを渡します。
type PackageWorker struct {}
func (w *PackageWorker) Work(s PackageHandlingStrategy) {
s.DoThis()
s.DoThat()
}
…あなたの労働者に。
優秀な回答、ありがとう!私はこれがいくつかの方法で解決された問題であることを知っていたので、パターンでそんなに失われていませんでした。再度、感謝します。 – KevDog
しかし、戦略を動的にロードするにはどうすればいいですか?サイトの設定に基づいて戦略をロードする必要がある場合は、どのように行っていますか?私が見るところでは、golangにパッケージを動的にロードする方法はありません。それとも別の方法がありますか? – Madhan
@Madhanはswitch文を使用しています。 – thwd