JY-CONTENTS

JY

JY-CONTENTS
search

+

MENU

【Swift】シングルトンクラス

【Swift】シングルトンクラス

(DATE)

-

2017.10.19

(CATEGORY)

-

シングルトンとは?

シングルトンとは、そのクラスのインスタンスが1つしか無いことを保証するための設計パターンです。

特徴

イニシャライザをprivateにする

イニシャライザをprivateにすることによってイニシャライザを使って外部からこのクラスのインスタンスを作ることができなくなります。
外部からイニシャライザを使ってインスタンスを作ろうとするとエラーになります。

クラス内にインスタンを生成する

自身のインスタンスを生成し、private指定の変数に格納しクラスプロパティにし、クラス内からのみインスタンスを参照できるようします。

インスタンスを外部から取得するクラスメソッドを作成

クラスメソッドを作成することで外部でインスタンスを作らずにSamクラスのインスタンスを取得できます。

サンプルコード

例1

/*イニシャライザをprivateにしているので、継承しようとするとエラーになるので、
final指定で継承を禁止する*/
final class Sam{
    //private class var ins:Samm{
        //get{return Samm()}
    //}

    private static let ins = Sam()
    var c = 100
    
    //イニシャライザをprivateにする
    private init(){
        
    }
    
    class func getins()->Sam{
        return ins
    }
}

クラスにアクセス

var a = Sam.getins()
var b = Sam.getins()
a.c         //100
b.c         //100
b.c = 200
a.c         //200
b.c         //200

変数aに納められたインスタンスも、変数bに納められたインスタンスも同じクラス内のインスタンスを参照しているので、片方のクラス内変数cの値を変更するとどちらも変更されることになります。
このようにすることで外部からは1つのインスタンスしか使用できないようになります。

例2

final class Sam{
    static let ins = Sam()
    var c = 100
    
    private init(){
        
    }
}

var a = Sam.ins
var b = Sam.ins
a.c //100
b.c //100
b.c = 200
a.c //200
b.c //200

NEW TOPICS

/ ニュー & アップデート

SEE ALSO

/ 似た記事を見る

JY CONTENTS UNIQUE BLOG

search-menu search-menu