Singletonデザインパターンは、最も人気のあるデザインパターンの一つです。1つのクラスの1つのオブジェクトだけを作成し、そのオブジェクトを必要に応じて使用できるようにするという問題を解決します。
シングルトンは、グローバルにアクセス可能な、クラスの共有インスタンスを提供するために使用します。例えば、サウンドエフェクトを再生するためのオーディオチャンネルや、HTTPリクエストを行うためのネットワークマネージャーなど、アプリ全体で共有されているリソースやサービスへの統一されたアクセスポイントを提供する方法として、独自のシングルトンを作成することができます。
静的な型のプロパティを使用してシンプルなシングルトンを作成します。このプロパティは、複数のスレッドで同時にアクセスした場合でも、一度だけレイジーに初期化されることが保証されています。
class Singleton {
static let shared = Singleton()
}
初期化以外の追加設定を行う必要がある場合は、クロージャーの起動結果をグローバル定数に割り当てることができます。
class Singleton {
static let shared: Singleton = {
let instance = Singleton()
// プロパティーやコードなどの実装
return instance
}()
}