在Golang中,外觀模式可以通過定義一個(gè)外觀類來隱藏系統(tǒng)的復(fù)雜性,并提供一個(gè)簡單的接口供外部使用。以下是一個(gè)簡單的Golang外觀模式的實(shí)現(xiàn)示例:
package main
import "fmt"
// 子系統(tǒng)1
type SubSystem1 struct{}
func (s *SubSystem1) Operation1() {
fmt.Println("SubSystem1: Operation1")
}
// 子系統(tǒng)2
type SubSystem2 struct{}
func (s *SubSystem2) Operation2() {
fmt.Println("SubSystem2: Operation2")
}
// 外觀類
type Facade struct {
subSystem1 *SubSystem1
subSystem2 *SubSystem2
}
func NewFacade() *Facade {
return &Facade{
subSystem1: &SubSystem1{},
subSystem2: &SubSystem2{},
}
}
func (f *Facade) Operation() {
fmt.Println("Facade: Operation")
f.subSystem1.Operation1()
f.subSystem2.Operation2()
}
func main() {
// 使用外觀類
facade := NewFacade()
facade.Operation()
}
在上面的示例中,我們定義了兩個(gè)子系統(tǒng)(SubSystem1
和SubSystem2
),它們分別具有自己的一些操作方法。然后我們定義了一個(gè)外觀類Facade
,并在其中封裝了子系統(tǒng)的操作方法。
在main
函數(shù)中,我們使用外觀類來執(zhí)行操作。通過外觀類,我們可以隱藏子系統(tǒng)的復(fù)雜性,并提供一個(gè)簡單的接口供外部使用。
運(yùn)行上面的代碼,輸出結(jié)果為:
Facade: Operation
SubSystem1: Operation1
SubSystem2: Operation2
可以看到,通過外觀類,我們可以通過一個(gè)簡單的方法調(diào)用來執(zhí)行復(fù)雜的操作。