GoFのデザインパターン(Design Pattern)の一つ、シングルトン(Singleton)をRubyのサンプルコードで紹介します。
シングルトンパターンは、1つだけに限定されたインスタンスを複数のオブジェクト内で共有する場合に用います。例えば、ログの書込処理を行うメソッドでのファイルへのアクセスや、システム内で共通のキャッシュテーブルを参照する場合などです。
GoFのシングルトンの前提条件
作成したクラスは唯一1つだけのインスタンスを自身で作成する システム内のどこでもその1つだけのインスタンスにアクセスできる
サンプルソース
シングルトンパターンのサンプルを作成していきます。
ここでは、Rubyの標準ライブラリであるSingletonモジュールを使います。 このSingletonモジュールを使うことで、Mix-inしたクラスのインスタンスは常に同一のものを返すようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
上のコードを動かしてみます。
1 2 3 4 5 6 7 8 9 10 | |
Singletonの条件を満たすオブジェクトを生成できている事がわかります。 また、Object#newが失敗することも次のコードで確認できます。
1 2 3 | |
説明は以上です。 このサンプルソースはGitHubにも置いています。
Special Thanks
Amazon.co.jp: Rubyによるデザインパターン: Russ Olsen, ラス・オルセン, 小林 健一, 菅野 裕, 吉野 雅人, 山岸 夢人, 小島 努: 本
変更来歴
12/10 09:00 GitHubへのサンプルソースの設置。導入文の修正
12/11 00:00 書籍へのリンクをAmazon アフィリエイトに変更
12/11 15:00 GoFのシングルトンの前提条件/ソースコードの説明文を追加
06/21 17:40 Ruby2.0.0対応、読みづらい部分を修正