たった4行!Swiftでシングルトンの書き方
こんにちは、プログラマーの@Yuuです。
プログラムを書いていてマネージャークラスのようなもので良く出てくるシングルトン(Singleton)。アプリ開発をしていてシングルトンを利用する機会が増えたので、自分の備考録も兼ねてSwift3に対応しているシングルトンの書き方をご紹介します。
スポンサーリンク
シングルトン(Singleton)とは
そもそもシングルトンてナンジャラホイ?という話から書くと
シングルトンはインスタンスを1つしか作らないクラスの事で、デザインパターンの1つ。
マネージャークラスのようなインスタンスを複数で持つ必要がないクラスや、複数のクラスで値を共有したい場合に使います。
詳しい解説はwikipediaや
Singleton パターン(シングルトン・パターン)とは、オブジェクト指向のコンピュータプログラムにおける、デザインパターンの1つである。>GoF(Gang of Four; 4人のギャングたち)によって定義された。Singleton パターンを用いると、そのクラスのインスタンスが1つしか生成されないことを保証することができる。ロケールやLook&Feelなど、絶対にアプリケーション全体で統一しなければならない仕組みの実装に使用される。
以下のサイトが分かりやすかったです。
JavaTips ~Javaプログラミング編:クラスのインスタンスを1つに保つ(Singletonパターン) - @IT
Swiftでシングルトンを書く
以下がSwiftでのシングルトンの書き方です。
1 2 3 4 |
final class className { private init() {} static let shared = className() } |
たった4行!(๑•̀ㅂ•́)و✧
例えばこんな使い方が出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
final class TestManager { private init() {} static let shared = TestManager() private var testValue = "fuga" func getTestValue() -> String { return testValue } func setTestValue(_ newValue: String) { testValue = newValue } } var abc = TestManager.shared.getTestValue() // => "fuga" TestManager.shared.setTestValue("hoge") abc = TestManager.shared.getTestValue() // => "hoge" |
上記の場合、TestManagerクラス
のtestValue
という値を様々なクラスから共有出来るようになります。
あとがき
シングルトンを書くにあたってSwift1の時代はもっと複雑に書かないといけなかったのですが、随分シンプルに書けるようになったなぁと思います。
ではでは
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧