在Golang中,外观模式可以通过定义一个外观类来隐藏系统的复杂性,并提供一个简单的接口供外部使用。以下是一个简单的Golang外观模式的实现示例:
package mainimport "fmt"// 子系统1type SubSystem1 struct{}func (s *SubSystem1) Operation1() {fmt.Println("SubSystem1: Operation1")}// 子系统2type SubSystem2 struct{}func (s *SubSystem2) Operation2() {fmt.Println("SubSystem2: Operation2")}// 外观类type Facade struct {subSystem1 *SubSystem1subSystem2 *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()}在上面的示例中,我们定义了两个子系统(SubSystem1和SubSystem2),它们分别具有自己的一些操作方法。然后我们定义了一个外观类Facade,并在其中封装了子系统的操作方法。
在main函数中,我们使用外观类来执行操作。通过外观类,我们可以隐藏子系统的复杂性,并提供一个简单的接口供外部使用。
运行上面的代码,输出结果为:
Facade: OperationSubSystem1: Operation1SubSystem2: Operation2可以看到,通过外观类,我们可以通过一个简单的方法调用来执行复杂的操作。

