Flutter 싱글톤 패턴 구현

야민·2022년 7월 24일
1

싱글톤 패턴 (singleton-pattern)
소프트웨어 디자인 패턴에서 싱글톤 패턴을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글톤 패턴이라고 한다.

factory 키워드

  • 기존에 이미 생성된 인스턴스가 있다면 return 하여 재사용한다.
  • 하나의 클래스에서 하나의 인스턴스만 생성한다(싱글톤 패턴).
  • 서브 클래스 인스턴스를 리턴할 때 사용할 수 있다.
  • Factory constructors 에서는 this 에 접근할 수 없다.
class Test {
  final String data;

  Test({this.data});

  factory Test.fromJson(Map<String, dynamic> json) {
    return Test(
      data: json['data'],
    );
  }
}

factory는 '클래스와 같은 타입의 인스턴스' 또는 '메서드를 구현하는 인스턴스'를 반환해야 한다. 이렇게 생성된 인스턴스는 기존에 생성된 인스턴스가 아니라면 새롭게 생성되고, 기존 인스턴스가 있다면 기존 것을 반환한다.

싱글톤 패턴 형식

class Singleton {
  static final Singleton _instance = Singleton._internal();
  var data;
  
  factory Singleton() {
    //기존에 생성된 인스턴스가 아니라면 새롭게 생성되고, 기존 인스턴스가 있다면 기존 것을 반환한다.
    return _instance;
  }
  
  Singleton._internal() {
    // 초기화 코드
    data = 'start';
  }
  
  void test() {
    data = 'test';
  }
}


//--
late Singleton singleton

//---------
initState() {
  //factory 생성자 호출
  singleton = Singleton();
}

참조

0개의 댓글