本文へスキップ

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

しんぐるとんぱたーん

シングルトンパターンとは、あるクラスのインスタンスをプログラム全体で1つだけに制限するデザインパターンのことです。

シングルトンパターン(Singleton Pattern)は、GoFデザインパターンの「生成に関するパターン」の一つです。特定のクラスのインスタンスがアプリケーション実行中に1つしか存在しないことを保証し、そのインスタンスへの一元的なアクセス手段を提供します。

実装の基本構造は次のとおりです。

  • コンストラクタをprivate(非公開)にして外部から直接インスタンス化できなくする
  • クラス自身がインスタンスを静的フィールドに保持する
  • インスタンスを返す静的メソッド(例:getInstance())を用意し、初回呼び出し時のみインスタンスを生成して以後は同じものを返す

シングルトンが適切とされる代表的なユースケースは以下です。

  • アプリケーション設定(Configクラス)の一元管理
  • ログ書き込みクラス(Loggerクラス)
  • データベース接続プールの管理
  • スレッドプールやキャッシュ機構

ただし、シングルトンは設計上の問題点も多く指摘されています。グローバル状態を導入するため、クラス間の依存関係が見えにくくなり、ユニットテスト時にモックに差し替えにくいという課題があります。マルチスレッド環境では複数インスタンスが生成される競合状態(レースコンディション)を防ぐための同期処理も必要です。現代の開発では、シングルトンの代わりにDIコンテナ(依存性注入フレームワーク)でインスタンスのスコープを管理するアプローチが推奨されることが増えています。

使い方・例文

Webアプリケーションでログ出力クラスをシングルトンにすることで、アプリ全体のどのモジュールからも同一のLoggerインスタンスを通じてログを書き込めるようになります。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語