Singleton Pattern

seocho·2022년 8월 22일
0

iOS

목록 보기
3/24

특정 용도로 객체를 하나만 생성하여, 공용으로 사용하고 싶을 때 사용하는 디자인 유형

=> 비효율적

=> 이런식으로 하나의 instance에 어느 클래스에서든 접근 가능하게 하는 것


class UserInfo {
    static let shared = UserInfo()

    var id: String?
    var password: String?
    var name: String?

    private init() { }
}

=> 이런식으로 위의 class의 init을 private으로 지정해주어야 외부에서 또 다른 인스턴스를 생성하지 못함

장단점

장점

  • 한 번의 Instance만 생성하므로 메모리 낭비를 방지할 수 있음
  • Singleton Instance는 전역 Instance로 다른 클래스들과 자원 공유가 쉬움
  • DBCP(DataBase Connection Pool)처럼 공통된 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용 (쓰레드풀, 캐시, 대화상자, 사용자 설정, 레지스트리 설정, 로그 기록 객체등)

단점

  • Singleton Instance가 너무 많은 일을 하거나, 많은 데이터를 공유시킬 경우 다른 클래스의 Instance들 간 결합도가 높아져 "개방=폐쇄" 원칙을 위배함 (객체 지향 설계 원칙 어긋남)
  • 따라서 수정과 테스트가 어려워짐

참조

Swift) 싱글톤 패턴(Singleton Pattern)

profile
iOS 개린이

0개의 댓글