Singleton Pattern

5583 ワード

Singleton Pattern
  • 単色クラスが返すインスタンスの数は、アプリケーションが要求した回数に関係ありません.
  • モノトーンパターンは、1つの特定クラスのオブジェクト
  • のみを生成する.
  • 特定の用途のためのインスタンスを作成し、共通の目的のために
  • を使用する.
  • 例:
  • // Person 클래스가 있다
    // name과 age 같은 곳에서 입력 받는 곳이 아닌
    // 서로 다른 장소에서 입력 값을 받는 다고 생각해보자
    class Person {
        var name: String?
        var age: Int?
    }
    //A ViewController
    let person = Person()
    person.name = "haha"
    // name = haha, age = nil
    -------------------------
    //B ViewController
    let person = Person()
    person.age = 20
    // name = nil, age = 20
  • 同じインスタンスを一緒に入力したいのですが、結果はそうではありません.
  • モノトーンモード使用時:
  • // class를 사용하는 이유 싱글톤패턴은 하나의 인스턴스를 여러군데서 참조하여 쓰는 것이다.
    // class의 특징 중 하나는 reference타입이라는 것이다.
    class Person {
        //
        // 전역으로 사용할 것이기 때문에 static(타입 프로퍼티)사용 
        static let shared = Person()
        var name: String?
        var age: Int?
    
        // Init 함수를 호출해 인스턴스를 또 생생하는 것을 막기 위해 접근 제어자 private
        private init(){ } 
    }
    //A ViewController
    let person = Person.shared
    person.name = "haha"
    // name = haha, age = nil
    -------------------------
    //B ViewController
    let person = Person.shared
    person.age = 20
    // name = haha, age = 20
    // 다른 곳에서 사용해도 하나의 인스턴스를 공유하게 된다!
    メリットとデメリット
    長所
  • リソースの共有が容易
  • メモリ
  • のみ使用
    短所
  • が想像以上にあちこちで使われていると、私たちがどのオブジェクトにつながっているのかを見つけるのは難しい.
  • つまりメンテナンスが困難になる可能性がある
  • コメントリンク