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)

参考文献

Swift におけるシングルトン・staticメソッドとの付き合い方

Swift で簡単なシングルトンの実装方法

Singleton パターンの使いどころをまとめてみた

Singleton パターン