Skip to content

Latest commit

 

History

History
61 lines (52 loc) · 1.98 KB

싱글톤패턴.md

File metadata and controls

61 lines (52 loc) · 1.98 KB

싱글톤패턴

우선, Dart에서의 싱글톤패턴을 어떻게 만드는지 기본형의 코드부터 적어두고 따라가보자.

기본형과 설명

class CoredataManager {
  CoredataManager._privateConstructor();

  static final CoredataManager _instance = CoredataManager._privateConstructor();

  factory CoredataManager() {
    return _instance;
  }
}

1.

CoredataManager._privateConstructor();
static final CoredataManager _instance = CoredataManager._privateConstructor();
  • 이 두라인은 무얼 의미하는 것일까?
  • 이 것은 함수를 호출하는 것이 아닌 비어있는 생성자를 만드는 선언부다.
CoredataManager._privateConstructor() { }
  • 이걸 풀어쓰면 위와 같다. 즉, 외부에서 init을 차단해버리는 것이졍

2.

static final CoredataManager _instance = CoredataManager._privateConstructor();
  • 이건 뭘까?
  • 앞의 경우와 달리 생성자를 호출하는 행위로 호출한 결과의 인스턴스를 _instance 변수에 할당한 것

3.

  factory CoredataManager() {
    return _instance;
  }
  • 호출 시, 2에서 할당한 _instance 변수를 반환합니당.
  • 결국, CoredataManager();를 호출 할 때마다 factory에서 같은 인스턴스가 반환되도록 함다.

factory factory는 새로운 인스턴스를 생성하고 싶지 않을 때 사용하는 생성자이다.

  • 기존에 이미 생성된 인스턴스가 있다면 return 하여 재사용.
  • 하나의 클래스에서 하나의 인스턴스만 생성.
  • 자식클래스 인스턴스를 리턴할 때 사용가능(?)
  • Factory Constructors 에선 this에 접근불가
  • factory 정확히 이해가안간다 다시 공부해보자.

싱글톤의 장/단점

  • 장점1: 고정메모리로 메모리낭비(x), 속도측면이점
  • 장점2: 데이터 공유 쉬움
  • 단점1: 동시성 문제 발생가능성있음
  • 단점2: 테스트 문제
  • 단점3: DIP 위배됨