Ogólnie; nie gub się w wzorach i protokołach do budowania aplikacji Go. Język sprawia, że łatwo być ekspresyjnym i prostym. Przez większość czasu definiowanie solidnych interfejsów sprawia, że wszystko jest wystarczająco elastyczne.
Mimo to, oto przykład wzorca strategii w Go:
zdefiniować interfejs dla zachowania strategii:
type PackageHandlingStrategy interface {
DoThis()
DoThat()
}
Wdrożenie tej strategii:
type SomePackageHandlingStrategy struct {
// ...
}
func (s *SomePackageHandlingStrategy) DoThis() {
// ...
}
func (s *SomePackageHandlingStrategy) DoThat() {
// ...
}
a następnie , albo osadzić & hellip;
type PackageWorker struct {
SomePackageHandlingStrategy
}
func (w *PackageWorker) Work() {
w.DoThis()
w.DoThat()
}
& hellip; lub przekazać strategię & hellip;
type PackageWorker struct {}
func (w *PackageWorker) Work(s PackageHandlingStrategy) {
s.DoThis()
s.DoThat()
}
& hellip; do twojego pracownika.
Doskonała odpowiedź, dzięki! Nie tyle gubię się w schematach, ile wiedziałem, że w jakiś sposób był to problem rozwiązany. Dzięki jeszcze raz. – KevDog
Ale jak dynamicznie wczytać strategię? Jeśli muszę załadować strategię opartą na konfiguracji w witrynie, jak to zrobić w podróży? Z tego, co widzę, nie ma sposobu na dynamiczne ładowanie pakietu w golangu. A może jest inny sposób? – Madhan
@Madhan za pomocą instrukcji switch. – thwd