Ich versuche, Composite-Design-Muster zu implementieren. Ich verstand, wie man ein Objektobjekt zusammenstellt. In diesem Beispiel habe ich einen Athleten und die Schwimmfunktion.Können Objektkomponenten in einem zusammengesetzten Muster miteinander kommunizieren?
type Athlete struct {
name string
}
type CompositeAthlete struct {
athlete Athlete
Train func(name string)
}
Aber wenn ich brauche den Namen nach komponierten Objekterstellung weitergeben müssen:
comp := CompositeAthlete{
athlete: athlete,
Train: Swim,
}
comp.Train(athlete.name)
Ist es möglich, ein Verfahren zu injizieren, die innerhalb des Objekts zu lesen ist in der Lage, wo eingespritzt wird;
package main
import (
"fmt"
"strings"
)
type Athlete struct {
name string
}
type CompositeAthlete struct {
athlete Athlete
Train func(name string)
}
func (a *Athlete) Train() {
fmt.Println("training ...")
}
func Swim(name string) {
fmt.Println(strings.Join([]string{
name,
" is swimming",
}, ""))
}
func main() {
fmt.Println("vim-go")
athlete := Athlete{"Mariottide"}
athlete.Train()
comp := CompositeAthlete{
athlete: athlete,
Train: Swim,
}
comp.Train(athlete.name)
}
würde ich die comp
als zusammengesetzt Objekt wie sollte nicht von außen Namen erhalten, sondern von Athleten. Ist es möglich?