[Golang]Factory Methodパターンを学ぼう!~Version 2~

こんにちは。KOUKIです。

以前、Factory Methodパターンについて記事を書きましたが、別パターンでも実装したので紹介します。

golang

Factory Methodパターン

Factory Methodパターンは、インスタンスの生成に柔軟性を与えるためのパターンです。

サンプルコード

支払いに関するサンプルコードで、Factory Methodパターンの理解を深めましょう。

このコードでは、CashとDebitCardの2種類の支払い方法があると明示されています。

それぞれ、PaymentMethodインターフェースを実装するメソッド(Pay)を持っており、GetPaymentMethod関数の戻り値として受け取ることができます。

GetPaymentMethod関数のパラメータは支払IDになっており、「1」が渡された場合はCashを、「2」が渡された場合はDebitCardを返すようにできます(それ以外の場合はエラー)。

このように、Interfaceを利用することで柔軟なインスタンスの生成を可能にします

テストコード

実装はまだ途中ですが、テストコードを書いてみましょう。

テストを実行します。

「PASS: 1, FAIL: 2」ですね。

インスタンス生成

GetPaymentMethod関数にインスタンスの生成ロジックを実装します。

支払いIDに応じてインスタンスを生成し、呼び出し元に返しています。

テストを実行します。

まだエラーが出ますね。ただ、3番目のテストのエラーメッセー(Payment method 20 not recognized)がいい感じになりました。

Payメソッドの実装

Payメソッドを実装しましょう。

テストを実行します。

全てPASSになりました。

おわりに

インスタンス生成を柔軟に実装できるFactory Methodパターンは大変便利です。

例えば、DBのインスタンス生成とかに応用できそうです。MySQL, Redis, PostgreSQL, MongDBなど、複数のDBを切り替えて使用するプロダクトを実装することがあれば、大活躍ですね!

それでは、また!

Go記事まとめ

デザインパターンまとめ

Go記事をまとめます。

ソースコード

factory.go

factory_test.go

コメントを残す