Singleton Pattern 이란 무엇일까?

Singleton Pattern 이란?

싱글톤 패턴이란, 특정 용도로 객체를 하나만 생각해 공용으로 사용하고 싶을 때 사용하는 디자인 패턴

 

애플리케이션 전반에 걸쳐 딱 한번만 생성되고, 어디서든지 해당 인스턴스에 접근할 수 있는 클래스 디자인 패턴이라고도 한다 같은 말이네..!

 

이 패턴을 사용하면 하나만 메모리에 생성되어 어디서든 사용되기 때문에 데이터를 공유하거나 특정 리소스에 접근할 때 매우 유용하다.

이렇게 사진과 같이 하나의 인스턴스에 어디든 접근이 가능해진다 🙂

 

Singleton Pattern 생성하기

내가 이번에 만들었던 위시리스트를 참조해 Singleton Pattern 을 한번 생성해보자

class CoreDataManager {
  
  // MARK: - 코어데이터 매니저 싱글톤 만들기
  static let shared = CoreDataManager()
  private init() {}

이렇게 static 정적 멤버를 선언해 인스턴스를 저장할 프로퍼티 하나 생성해주면 된다.

 private init() {}

외부에서 접근하는 것을 막기위해 init () 함수 접근 제어자를 설정해 지정해주면 손쉽게 싱글톤 패턴을 만들기 편하다

 

Singlegon Pattern 접근하기

싱글톤 패턴은 위에 해당 패턴을 만든것과 마찬가지로 접근도 매우 손쉽다.

 

해당하는 데이터를 가져오고 싶은 VC 로 이동해 아까 프로퍼티로 만들어놨던 shared 만 접근하기만 하면 된다.

class ViewController: UIViewController {
		let wishListManager = CoreDataManager.shared

이렇게 접근만하면 코어데이터 데이터를 그대로 사용할 수 있는 상태가 된다 🙂

 

아주 편리하고 쉽게 연결할 수 있어서 앞으로도 많이 쓰일 것 같다.

 

Singleton Pattern의 장단점

장점

  • 한 번의 인스턴스만 생성하므로 메모리 낭비를 방지할 수 있다.
  • 싱글톤 인스턴스는 전역 인스턴스로 다른 클래스들과 자원 공유가 쉽다.
  • DBCP(DataBase Connection Pool) 처럼 공통된 객체를 여러개 생성해 사용해야하는 상황에서 많이 사용된다.

단점

  • 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시키게 된다면 다른 클래스의 인스턴스들 사이 결합도가 너무 높아져 객제 치향 설계 원칙이 어긋난다.
  • 위의 내용 때문에 수정과 테스트가 어려워 진다.

 

 

 

 

참조 : https://babbab2.tistory.com/66