implemented template pattern
This commit is contained in:
parent
a518796f6c
commit
a4bcf12db6
41
behavioral/template_p/templateP.go
Normal file
41
behavioral/template_p/templateP.go
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
package template_p
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
type Greeter interface {
|
||||||
|
message() string
|
||||||
|
}
|
||||||
|
|
||||||
|
type GreeterTemplate interface {
|
||||||
|
first() string
|
||||||
|
third() string
|
||||||
|
greet(Greeter) string
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrincesGreeterTmpl struct {}
|
||||||
|
func (p PrincesGreeterTmpl) first() string {
|
||||||
|
return "Welcome"
|
||||||
|
}
|
||||||
|
func (p PrincesGreeterTmpl) third() string {
|
||||||
|
return "to our palace!"
|
||||||
|
}
|
||||||
|
func (p PrincesGreeterTmpl) greet(g Greeter) string {
|
||||||
|
return fmt.Sprintf("%s, %s %s", p.first(), g.message(), p.third())
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrincesGreeter struct {
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
func (p *PrincesGreeter) message() string {
|
||||||
|
return fmt.Sprintf("your magesty princes %s", p.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Demo() {
|
||||||
|
prGreeter := &PrincesGreeter{"Diana"}
|
||||||
|
tmpl := PrincesGreeterTmpl{}
|
||||||
|
|
||||||
|
fmt.Println(tmpl.greet(prGreeter))
|
||||||
|
}
|
Reference in New Issue
Block a user