golang

Golang外观模式怎么实现

小亿
84
2024-01-23 13:37:07
栏目: 编程语言

在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()
}

在上面的示例中,我们定义了两个子系统(SubSystem1SubSystem2),它们分别具有自己的一些操作方法。然后我们定义了一个外观类Facade,并在其中封装了子系统的操作方法。

main函数中,我们使用外观类来执行操作。通过外观类,我们可以隐藏子系统的复杂性,并提供一个简单的接口供外部使用。

运行上面的代码,输出结果为:

Facade: Operation
SubSystem1: Operation1
SubSystem2: Operation2

可以看到,通过外观类,我们可以通过一个简单的方法调用来执行复杂的操作。

0
看了该问题的人还看了