Singleton Pattern

Minseong·2022년 2월 28일
0

swift

목록 보기
10/10

Singleton Pattern

  • 싱글톤 클래스는 애플리케이션이 요청한 횟수와 상관없이 동일한 인스턴스를 반환
    스크린샷 2022-03-01 오전 12 25 00
  • 싱글톤 패턴은 특정 클래스의 객체가 하나만 생성
  • 특정 용도로 인스턴스를 하나만 생성하여 공용으로 사용하고 싶을 때 사용
  • 예시를 보자:
// 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
// 다른 곳에서 사용해도 하나의 인스턴스를 공유하게 된다!

장단점

장점

  • 자원 공유가 쉬움
  • 메모리를 단 한번만 사용

단점

  • 이곳저곳에서 상상 이상으로 사용될 경우 우리가 어떤 객체와 연결되어 있는지 찾아내기 힘들어진다.
  • 즉, 유지보수가 어려워질 수 있다

참고 링크

profile
안녕하세요! ios 공부 중인 초보 개발자입니다!

0개의 댓글

관련 채용 정보