定義
提供一個統一的接口,用來訪問子系統中的一羣接口。外觀定義了一個高層接口,讓子系統更容易使用。
角色
1.高層接口
2.子系統接口
例子
小明喝咖啡,咖啡店製作咖啡,製作咖啡又需要咖啡豆和水等,咖啡店對於小明來說就統一了咖啡豆等子類訪問。
//子系統接口
type Caffe struct{
Name string
}
type CaffeineShop interface{
MakeCaffe(name string)*Caffe
SellCaffe(name string)*Caffe
}
//國貨之光咖啡店
type Guohuozhiguang struct{
}
func(g *Guohuozhiguang)MakeCaffe(name string)*Caffe{
return &Caffe{Name:name}
}
func(g *Guohuozhiguang)SellCaffe(name string)*Caffe{
return g.MakeCaffe(name)
}
func main(){
caffeShop :=&Guohuozhiguang{}
caffe := caffeShop.SellCaffe("america")
}
總結
外觀模式即是一種對一些對象的邏輯抽象使其訪問者更加簡單,就像去買東西,不需要關係東西是怎麼製造的。