복합 디자인 패턴을 구현하려고합니다. 나는 물체의 대상을 어떻게 구성 하는지를 이해했다. 이 예에서는 운동 선수와 수영 기능이 있습니다.오브젝트 구성 요소는 합성 패턴으로 서로 통신 할 수 있습니까?
type Athlete struct {
name string
}
type CompositeAthlete struct {
athlete Athlete
Train func(name string)
}
하지만 합성 객체 생성 후 이름을 전달해야하는 경우
comp := CompositeAthlete{
athlete: athlete,
Train: Swim,
}
comp.Train(athlete.name)
가 주입 대상물의 내부에 판독 할 수있는 방법을 주입하는 것이 가능하다
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)
}
그 외부에서 이름을받지해야 구성된 객체로 comp
하지만 운동 선수에서 부탁합니다. 그것은 가능합니까?