DEV - iOS/Background

[iOS Interview Questions] Singleton 패턴을 활용하는 경우를 예를 들어 설명하시오.

베이비코더 2023. 3. 22. 13:52
반응형

디자인 패턴이란?

코드를 작성하는 데에 쓰이는 설계 방식, 틀, 구조들이라고 생각하면 될 것 같습니다.

유명한 MVC나 MVVM 같은 디자인 패턴들은 전체적인 코드들을 다루는 큰 틀이라 할 수 있고,

싱글톤 패턴은 이보다는 조금 작은 범위에서 적용하는 디자인 패턴입니다.

Singleton 패턴이란?

앱이 시작될 때 어떤 클래스가 최초 한 번 메모리에 할당되고, 1개의 인스턴스만 생성되어 사용하는 패턴입니다.

이 클래스는 다른 곳에서 사용할 때 새로운 인스턴스를 생성해서 새로운 메모리 공간에 할당되는 것이 아닌, 원래 처음 생성했을 때 만들어진 메모리 공간에 다시 참조하게 됩니다.

따라서 하나의 인스턴스만 메모리에 등록됐기 때문에 어느 곳에서든지 이 클래스를 사용할 때 값을 계속해서 공유할 수 있게 됩니다.

 

회사나 피시방에서 우리는 개개인마다 프린터기를 하나씩 갖고 있지 않고 보통 공유되는 하나의 프린터기를 연결해서 사용합니다.

이 공유되는 프린터기를 싱글톤 패턴으로 작성된 클래스 객체라고 생각하면 됩니다.

Singleton 패턴의 장점

  • 고정된 메모리 영역 사용으로 메모리 낭비를 방지한다.
  • 싱글톤 패턴으로 만들어진 클래스는 전역이기 때문에 다른 클래스에서 데이터를 공유하기 쉽다.
  • 두 번째 사용할 때는 객체 로딩 시간이 줄어들기 때문에 성능면에서 이점이 있다.

Singleton 패턴의 단점

  • 싱글톤 인스턴스에 너무 많은 데이터가 들어있는 경우, 
    다른 클래스들 간의 데이터 중복으로 인한 간섭이 생겨 수정이나 유지보수에 어려움을 줄 수 있는데 이 것을 또 다른 말로 결합도가 높아진다고 한다.

결론

Singleton 패턴을 활용하는 경우

  1. 사용자의 정보 저장
    보통 1명의 유저가 앱을 사용하기 때문에 사용자의 정보를 저장, 사용할 때 싱글톤 패턴이 적합하다고 할 수 있고, Swift에서 UserDefaults라는 싱글톤 패턴 클래스를 제공합니다.
    이 클래스는 딕셔너리 형태로 값을 저장해서 마치 DB처럼 값을 가져와서 사용하고 변경할 수 있는 기능을 제공합니다.
    Swift는 이외에도 다양한 싱글톤 패턴 클래스를 지원합니다.
  2. 앱의 환경설정
    앱 실행 환경에 따라 다른 정보를 저장하고 사용해야 할 때가 있습니다.
    예를 들면 현재 앱을 실행한 서버가 로컬, 개발, 운영 등의 서버 환경에 따라서 API 접속 URL이나 포트가 달라질 수 있고, DB 환경설정도 다르게 사용할 수 있습니다.
    이처럼 앱을 실행하는 동안 계속해서 사용해야할 환경 설정 변수들도 싱글톤 패턴을 활용해서 사용할 수 있습니다.
반응형