J'essaie de mettre en œuvre un motif de conception composite. J'ai compris comment composer un objet d'objet. Dans cet exemple, j'ai un athlète et la fonction de nage.Les composants de l'objet peuvent-ils se parler entre eux en mode composite?
type Athlete struct {
name string
}
type CompositeAthlete struct {
athlete Athlete
Train func(name string)
}
Mais si je dois passer le nom après la création d'objet composé:
comp := CompositeAthlete{
athlete: athlete,
Train: Swim,
}
comp.Train(athlete.name)
Est-il possible d'injecter une méthode qui est capable de lire dans l'objet où est injecté;
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)
}
Je voudrais que comp
comme objet composé ne doit pas recevoir le nom de l'extérieur, mais de l'athlète. C'est possible?