デザインパターンとして多様されるシングルトン。
超基本だけど、ほんとにシングルトンとして機能しているか自信なかったのでXcodeのPlaygroundで試してみました。
何かご指摘があればコメントいただけると幸いです。
SingletonPlayground.playground
/*
シングルトンを保証する検証。
Singletonクラスのobjクラス変数を複数回呼び出して、
Objectクラスのvalueクラス変数が1のままならシングルトンとして正しい。
*/
class Singleton {
static var obj = Object()
var obj2 = Object()
}
class Object {
static var value = 0
init() {
Object.value += 1
}
func get() -> Int {
return Object.value
}
}
print(Singleton.obj.get())
print(Singleton.obj.get()) // シングルトンでなければ2になっているはず
print(Singleton().obj2.get()) // シングルトンではないので初期化されカウントアップ
print(Singleton().obj2.get())
print(Singleton.obj.get())
// 結果
// "1"
// "1"
// "2"
// "3"
// "3"