본문 바로가기

Flutter

[Flutter] 싱글톤 패턴에 대해서 알아보자!

싱글톤(SingleTon)이란?


보통의 경우에는 객체를 인스턴스화 시키면 하나의 인스턴스가 생기는데, 생성자를 호출할 때마다

 

인스턴스 1, 인스턴스 2, 인스턴스 3, ....

 

이런 식으로 여러 인스턴스가 생성자를 한번 호출할 때 마다 생기게 된다.

고로, 같은 객체이지만, 인스턴스 안에 멤버 변수들은 이름은 같아도 각각 다른 값을 부여받을 수 있다.

이를 방지하기 위해서 하나의 인스턴스를 만들어서 그 안에 멤버 변수들의 값을 공유하는 것이 싱글톤 패턴이다.

 

즉, 새로운 생성자를 만들디 않고, 딱 한 번만 인스턴스를 사용하여 하나의 생성자 값만을 가질 수 있다.

그러므로 최초에 생성된 단 하나의 생정자만 사용되고, 값이 있으면 원래 값으로 리턴해준다.

 

Factory

 

싱글톤 패턴을 사용할 때 쓰는 예약어이다.

Factory는 

1. 이미 생성된 인스턴스가 있다면 원래 값을 Return 해서 사용한다.

2. 하나의 클래스에서 하나의 인스턴스만 사용한다.

 

예제를 보면서 살펴보자!

 

Class Singleton{
  int count;         // 증가하는 변수
  
  static final Singleton _instance = Singleton._internal();
  
  // _instance 값을 반환
  // 값이 있으면 원래 값을 반환한다.
  fatory Singleton() => _instance;
  
  Singleton._internal(){
    // 처음 인스턴스를 만들어 주어 실행하는 코드를 여기에 넣는다.
    // 초기화
    count = 0;
    print("Singleton was created");
  }
}

void main() {

  var one = Singleton();  // 첫 싱글톤 생성자
  
  // 한번 더 호출해도
  // 첫 생성자를 호출하여, 같은 인스턴스만 넘겨받는다.
  
  var two = Singleton();
  
  // 각 클래스의 count 1씩 증가
  
  one.count++;
  two.count++;
  
  print(${one.count} + ${two.count});
  
}

결과
2 2   // 하나의 인스턴스 재사용해서!

 

'Flutter' 카테고리의 다른 글

[알아야 할 사실] .bash_profile  (0) 2021.12.30
[Flutter] Flutter Build Mode  (0) 2021.12.20
[PAKAGE] 유용한 PAKAGE 모음집  (0) 2021.11.30
[PAKAGE] Google_fonts  (0) 2021.11.30
[PAKAGE] 알아두면 좋을 pakage - jwt  (0) 2021.11.30