본문 바로가기
Flutter

플러터에서 싱글톤 패턴 만드는 방법과 이유

by Maccrey Coding 2024. 7. 31.
728x90
반응형

 

Flutter 개발을 하다 보면 전역적으로 하나의 인스턴스만 존재하도록 보장해야 하는 클래스가 필요할 때가 있습니다. 이럴 때 싱글톤(Singleton) 패턴을 사용하면 됩니다. 이번 블로그에서는 싱글톤 패턴을 만드는 방법과 사용 이유에 대해 알아보겠습니다.

싱글톤 패턴이란?

싱글톤 패턴은 객체를 오직 하나만 생성하도록 보장하는 디자인 패턴입니다. 이렇게 하면 애플리케이션 전체에서 동일한 인스턴스를 공유할 수 있습니다. 예를 들어, 네트워크 연결, 데이터베이스 연결, 앱 설정 등을 관리할 때 유용합니다.

싱글톤 패턴을 사용하는 이유

  1. 자원 절약: 동일한 객체를 여러 번 생성하지 않고 하나의 인스턴스만 사용하므로 메모리와 자원을 절약할 수 있습니다.
  2. 글로벌 접근: 애플리케이션 어디서든 싱글톤 인스턴스에 접근할 수 있어 편리합니다.
  3. 데이터 일관성 유지: 동일한 인스턴스를 공유하므로 데이터의 일관성을 유지할 수 있습니다.

Flutter에서 싱글톤 패턴 구현하기

Flutter에서 싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 그중 가장 일반적인 방법 두 가지를 소개합니다.

 

1. factory 생성자를 사용한 싱글톤 구현

class Singleton {
  // private constructor
  Singleton._privateConstructor();

  // static instance of the class
  static final Singleton _instance = Singleton._privateConstructor();

  // factory constructor to return the same instance
  factory Singleton() {
    return _instance;
  }

  // Example method
  void someMethod() {
    print("Singleton method called");
  }
}

 

사용 방법

void main() {
  Singleton singleton1 = Singleton();
  Singleton singleton2 = Singleton();

  singleton1.someMethod(); // Singleton method called

  // Check if both instances are the same
  print(identical(singleton1, singleton2)); // true
}

 

2. static 변수를 사용한 싱글톤 구현

class Singleton {
  // Private constructor
  Singleton._privateConstructor();

  // Static instance of the class
  static final Singleton _instance = Singleton._privateConstructor();

  // Static method to get the instance of the class
  static Singleton getInstance() {
    return _instance;
  }

  // Example method
  void someMethod() {
    print("Singleton method called");
  }
}

 

사용 방법

void main() {
  Singleton singleton1 = Singleton.getInstance();
  Singleton singleton2 = Singleton.getInstance();

  singleton1.someMethod(); // Singleton method called

  // Check if both instances are the same
  print(identical(singleton1, singleton2)); // true
}

싱글톤 패턴 사용 시 주의사항

  1. 멀티스레드 환경: 싱글톤 패턴을 멀티스레드 환경에서 사용할 때는 동기화 문제에 주의해야 합니다. Flutter는 기본적으로 싱글 스레드로 동작하지만, Isolate를 사용하면 멀티스레드 환경이 될 수 있습니다.
  2. 테스트 가능성: 싱글톤 패턴은 테스트하기 어려울 수 있습니다. Mocking을 사용하거나 DI(Dependency Injection)를 고려해보세요.

결론

싱글톤 패턴은 Flutter 애플리케이션에서 자주 사용되는 디자인 패턴 중 하나입니다.

하나의 인스턴스만 존재하도록 보장하여 자원을 절약하고 데이터의 일관성을 유지할 수 있습니다.

Flutter에서 싱글톤 패턴을 구현하는 두 가지 방법을 소개했으니, 필요한 경우 적절히 활용해보세요.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

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

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

play.google.com

 

728x90
반응형