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