[Golang]シングルトンパターンを学ぼう!~Version 2~

こんにちは。KOUKIです。

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

そもそもシングルトンパターンとは?

シングルトンパターンは、アプリケーション内で「シングルインスタンスを提供することを保証する」デザインパターンです。

インスタンスが重複して生成されないことを保証することに、どのようなメリットがあるのでしょうか?

パッと思いつく限り、以下のシチュエーション時に便利です。

  • データベースにアクセスするコネクションインスタンスを作成したい
  • サーバーにSSH接続する際のインスタンスを作成したい
  • 変数や何らかの空間に対して、アクセス制限を設けたい

しかも、シングルトンパターンはそれほど難しくないので、サクッと覚えてしまいましょう。

実装

早速、実装に入ります。

作るものは、カウンターアプリケーションです。

カウンターのシングルインスタンスを用意し、全ての処理をそのシングルインスタンスに記録していくイメージです。

GetInstanceでシングルインスタンスを取得します。instance変数はグローバル変数になっており、GetInstanceを呼ぶと空チェックを行い、空の場合はインスタンス生成、空でない場合はinstance変数を返します。

AddOneやRemoveOneはシングルインスタンスが保証されているかチェックするためのメソッドです。

テスト

テストコードを実装し、シングルトンパターンの検証を行いましょう。

インスタンスを3回取得して、それぞれが持つ値をテストしています。

下記のコマンドで、テストしてみましょう。

OKですね!

おわりに

シングルトンパターンは、幾多にも及ぶデザインパターンの中でも特に有名で、実務でも使用する頻度が高いパターンです。

しかし、この記事で見たように「簡単に覚えられるパターン」でもあるので、積極的に取り入れてみましょう。

それでは、また!

Go記事まとめ

デザインパターンまとめ

Go記事をまとめます。

ソースコード

singleton.go

singleton_test.go

コメントを残す