Singleton
Singleton
Section titled “Singleton”パターン一言説明
Section titled “パターン一言説明”インスタンスを 1 つだけ維持し、グローバルなアクセスポイントを提供するパターンです。
Unity でよく使う状況
Section titled “Unity でよく使う状況”- ゲーム設定やログのように単一サービスが必要なとき
- シーン間で維持されるマネージャーを置くとき
構成要素(役割)
Section titled “構成要素(役割)”- Singleton Instance
- Global Accessor
- Lifetime Guard
Unity 例 (C#)
Section titled “Unity 例 (C#)”以下のコードは、上で説明した状況を Unity プロジェクトの文脈で単純化した例です。
using UnityEngine;
public sealed class GameSettingsService : MonoBehaviour{ public static GameSettingsService Instance { get; private set; }
private void Awake() { if (Instance != null && Instance != this) { Destroy(gameObject); return; }
Instance = this; DontDestroyOnLoad(gameObject); }}- オブジェクト生成責務が整理され、依存関係の管理がしやすくなります。
- 環境や状況ごとに生成方針を柔軟に変えられます。
- 単純な問題に過度な生成抽象化を入れないようにする必要があります。
- 生成ルールが増えるほど、文書とテストの同期が重要になります。
動作ダイアグラム
Section titled “動作ダイアグラム”複数の呼び出し元が同じインスタンスを共有する流れです。