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