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