본문 바로가기
Flutter/Flutter Programming

플러터에서 싱글톤 패턴이란 무엇인가요?

by Maccrey 2024. 7. 4.
반응형

플러터(Flutter)에서 싱글톤 패턴(Singleton Pattern)은 클래스의 인스턴스를 하나만 만들고, 어디서든 동일한 인스턴스를 사용하도록 보장하는 디자인 패턴입니다. 이 패턴은 주로 앱 내에서 전역적으로 상태를 관리하거나, 공유 자원을 효율적으로 사용하고자 할 때 사용됩니다.

왜 싱글톤 패턴을 사용할까요?

  1. 전역 상태 관리: 앱의 여러 부분에서 동일한 상태를 공유하고 싶을 때 유용합니다. 예를 들어, 사용자 세션 정보나 설정 데이터를 관리할 때 사용됩니다.
  2. 자원 절약: 동일한 객체를 재사용하여 메모리 사용을 줄일 수 있습니다. 데이터베이스 연결이나 네트워크 클라이언트 같은 자원을 효율적으로 관리할 수 있습니다.
  3. 객체 생성 비용 절감: 객체를 반복적으로 생성하는 비용을 줄이고, 하나의 인스턴스를 재사용하여 성능을 향상시킬 수 있습니다.

싱글톤 패턴 사용법

플러터에서 싱글톤 패턴을 구현하는 방법을 단계별로 설명하겠습니다.

1. 기본 싱글톤 패턴

class MySingleton {
  // 하나의 인스턴스를 유지하는 정적 필드
  static final MySingleton _instance = MySingleton._internal();

  // 비공개 생성자
  MySingleton._internal();

  // 인스턴스를 반환하는 팩토리 생성자
  factory MySingleton() {
    return _instance;
  }

  // 클래스의 메서드와 속성을 여기에 정의합니다.
  void doSomething() {
    print('Doing something!');
  }
}

void main() {
  var s1 = MySingleton();
  var s2 = MySingleton();

  print(s1 == s2); // 출력: true

  s1.doSomething(); // 출력: Doing something!
}

예제 설명

  1. 정적 필드: _instance는 클래스의 유일한 인스턴스를 저장합니다.
  2. 비공개 생성자: MySingleton._internal()은 외부에서 인스턴스를 생성하지 못하도록 합니다.
  3. 팩토리 생성자: factory MySingleton()은 항상 동일한 인스턴스를 반환합니다.
  4. 메서드 사용: doSomething 메서드를 호출하면 싱글톤 인스턴스를 통해 메서드가 실행됩니다.

2. 초기화가 필요한 싱글톤 패턴

때로는 싱글톤 인스턴스가 생성될 때 초기화가 필요할 수 있습니다. 이를 위해 생성자에 초기화 로직을 추가할 수 있습니다.

class ConfigManager {
  static final ConfigManager _instance = ConfigManager._internal();

  String config;

  ConfigManager._internal();

  factory ConfigManager() {
    return _instance;
  }

  void loadConfig(String value) {
    config = value;
  }
}

void main() {
  var configManager = ConfigManager();
  configManager.loadConfig('API_KEY_12345');

  var anotherConfigManager = ConfigManager();
  print(anotherConfigManager.config); // 출력: API_KEY_12345
}

예제 설명

  1. 정적 필드: _instance는 클래스의 유일한 인스턴스를 저장합니다.
  2. 비공개 생성자: ConfigManager._internal()은 외부에서 인스턴스를 생성하지 못하도록 합니다.
  3. 팩토리 생성자: factory ConfigManager()는 항상 동일한 인스턴스를 반환합니다.
  4. 초기화 메서드: loadConfig 메서드를 통해 설정 값을 초기화합니다.

결론

플러터에서 싱글톤 패턴은 전역 상태 관리, 자원 절약, 객체 생성 비용 절감 등의 이유로 매우 유용합니다.

싱글톤 패턴을 사용하여 효율적이고 일관된 앱 상태 관리와 자원 관리를 구현할 수 있습니다.

앱의 다양한 부분에서 공통으로 사용되는 객체가 필요할 때, 싱글톤 패턴을 고려해 보세요.

 

 

 

 

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

나비일기장 [수발일기장] - Google Play 앱

수형자 수발가족및 수발인을 위한 일기장으로 수형생활시기에 따른 정보를 얻을 수 있습니다.

play.google.com

 

반응형