Singleton
デザインパターンとは
デザインパターンとはオブジェクト思考開発における先人たちが作り上げてきた便利な設計図です。
Gang of Four通称Gofが1994年に出版した『オブジェクト指向における再利用のためのデザインパターン』の中で23個の設計図が紹介されています。
Note
デザインパターンのサンプルコードはSwift4でまとめます。
シングルトンパターンとは?
シングルトンパターンはクラスのインスタンスが1つしか存在しないことを保証するパターンです。
全てのクラスで1つの同じオブジェクトをいじりたい時に使います。シングルトンパターンを覚えるとなんでもかんでもシングルトンにしてしまいがちですが、参考文献の多くにあるようにstaticメソッドで済んでしまう場合や、DI(依存性の注入)などを行った方がシンプルになることもあるので安易に使うのはよくありません。
サンプルコード
Singletonは1つであることを保証するためクラス内で自分のインスタンスを作成します。シングルトンクラスは世界に一人しかいない私を作りました。
インスタンスにはstatic変数からアクセスします。
class Harumi {
static let shared = Harumi(name: "harumi", old: 23)
let name:String
var old:Int
private init(name: String, old: Int) {
self.name = name
self.old = old
}
}
呼び出し側
今回は単一でしか呼び出していませんが、クラスAとBがあった場合Aでoldを変更するとBで参照する時にはAで変更した値を取得することができます。
print(Harumi.shared.name)
print(Harumi.shared.old)
Harumi.shared.old = 30
print(Harumi.shared.old)
コード一覧
import Foundation
class Harumi {
static let shared = Harumi(name: "harumi", old: 23)
let name:String
var old:Int
private init(name: String, old: Int) {
self.name = name
self.old = old
}
}
print(Harumi.shared.name)
print(Harumi.shared.old)
Harumi.shared.old = 30
print(Harumi.shared.old)