Go言語のFacadeパターンによるすっきりしたインターフェイスの呼び出し方

Go言語のFacadeパターンを利用するとシンプルなAPI呼び出しを実現できます。Facadeパターンは、システムの機能をクライアントがより簡単に使えるよう、APIを簡略化する構造設計パターンです。以下、Go言語のFacadeを使用して簡単なAPI呼び出しを実装したサンプルコードを紹介します。

まず、外部システムのインターフェイスを定義する:

type SubSystemA interface {
OperationA()
}
type SubSystemB interface {
OperationB()
}
type SubSystemC interface {
OperationC()
}

これらのインタフェースを実装するコンクリートサブシステムを作成する。

type ConcreteSubSystemA struct{}
func (s *ConcreteSubSystemA) OperationA() {
fmt.Println("Operation A")
}
type ConcreteSubSystemB struct{}
func (s *ConcreteSubSystemB) OperationB() {
fmt.Println("Operation B")
}
type ConcreteSubSystemC struct{}
func (s *ConcreteSubSystemC) OperationC() {
fmt.Println("Operation C")
}

ファサードを定義して、サブシステムの呼び出しをカプセル化します。

type Facade struct {
subsystemA SubSystemA
subsystemB SubSystemB
subsystemC SubSystemC
}
func NewFacade() *Facade {
return &Facade{
subsystemA: &ConcreteSubSystemA{},
subsystemB: &ConcreteSubSystemB{},
subsystemC: &ConcreteSubSystemC{},
}
}
func (f *Facade) Operation() {
f.subsystemA.OperationA()
f.subsystemB.OperationB()
f.subsystemC.OperationC()
}

最後に、ファサード・インターフェースを呼び出すことができますが、具体的なサブシステムについて知っておく必要はありません

func main() {
facade := NewFacade()
facade.Operation()
}

ファサードパターンを活用することで、複雑なサブシステムをカプセル化し、クライアントがシンプルなインターフェイスを介してそれらの機能を利用できるようにし、インターフェイス呼び出しを簡略化します。

bannerAds