嗨!今天我們來深入探討鏈式方法模式,也就是讓你可以一路連續調用方法,看起來好像在鏈接它們似的。那麼,讓我們馬上進入主題吧!
這種模式在建構者模式中很常見,讓你可以連續設定物件的屬性:
package main
import (
"fmt"
)
type CarBuilder struct {
brand string
color string
speed int
}
func (cb *CarBuilder) SetBrand(b string) *CarBuilder {
cb.brand = b
return cb
}
func (cb *CarBuilder) SetColor(c string) *CarBuilder {
cb.color = c
return cb
}
func (cb *CarBuilder) SetSpeed(s int) *CarBuilder {
cb.speed = s
return cb
}
func (cb *CarBuilder) Build() string {
return fmt.Sprintf("建造了一輛 %s 色的 %s 車,最高速度為 %d km/h", cb.color, cb.brand, cb.speed)
}
func main() {
car := &CarBuilder{}
result := car.SetBrand("BMW").SetColor("紅").SetSpeed(200).Build()
fmt.Println(result)
}
上述例子中,我們透過鏈式調用逐步設定汽車的屬性,最後建造出一輛汽車。
在配置設定時,這樣的模式也相當實用:
package main
import (
"fmt"
)
type Config struct {
host string
port int
user string
}
func (c *Config) SetHost(h string) *Config {
c.host = h
return c
}
func (c *Config) SetPort(p int) *Config {
c.port = p
return c
}
func (c *Config) SetUser(u string) *Config {
c.user = u
return c
}
func (c *Config) Show() {
fmt.Printf("Host: %s, Port: %d, User: %s\n", c.host, c.port, c.user)
}
func main() {
cfg := &Config{}
cfg.SetHost("localhost").SetPort(8080).SetUser("admin").Show()
}
這裡,我們透過鏈式調用設定配置的各項參數,然後顯示它。
好啦,今天的主題就講到這裡啦!通過鏈式方法模式,你可以更有組織、更簡潔地撰寫程式碼。當你想要按照一定的順序設定物件的屬性或是調用方法時,這真的是個很好用的手法!希望你們都能在日常的開發中找到這個模式的蹤跡,甚至自己動手用用看!下次見啦!😄