본문 바로가기

플러터&어플리케이션

flutter singleton

1.flutter 싱글톤 

일단 factory란 개발자가 임의로 클래스의 인스턴스를 생성해서 이용하는 패턴이 아닌, 인스턴스를 대신 생성해서 반환해주는 패턴 기법이다.

 

일반클래스 class1

일반클래스 class2

class1 와 class2 다른 클래스

 

싱글톤 class1

싱글톤 class2

class1과 class2 는 같은 클래스

 

class Singleton{
  int count;
  static final Singleton _instance = Singleton._internal();
  
  factory Singleton(){
    print('Singleton factory');
    return _instance;
  }
  
  Singleton._internal(){
    count = 0;
    print('Singleton was created');
  }
}

class Normal{
  int count;
  Normal(){
    count = 0;
    print('Normal class was create');
  }
}

void main() {
  var nOne = Normal();   //첫 번째 일반 클래스 생성
  var nTwo = Normal();   //두 번째 일반 클래스 생성

  var one = Singleton(); //첫 번째 싱글톤 클래스 생성  
  //두 번째 싱글톤 클래스 생성
  // - 이미 클래스가 생성되었기 때문에 인스턴스만 넘겨준다.
  //   또한 초기화 코드도 실행되지 않는다.
  var two = Singleton(); 

  // 최초 각 클래스의 count값 출력
  print('singleton one: ${one.count}, two: ${two.count}');
  print('normal one: ${nOne.count}, two: ${nTwo.count}');
  
  // 각 클래스의 count값 1씩 증가
  one.count++;
  two.count++;
  nOne.count++;  
  nTwo.count++;  
  print('##### Each class was updated.#################### ');
  // 다시 한번 각 클래스의 count값 출력
  print('singleton one: ${one.count}, two: ${two.count}');
  print('normal one: ${nOne.count}, two: ${nTwo.count}');

  // 클래스가 같은 인스턴스 인지 확인
  print('is singleton class same: ${identical(one, two)}');
  print('is normal class same: ${identical(nOne, nTwo)}'); 
 
}

 

참조 : m.blog.naver.com/PostView.nhn?blogId=chandong83&logNo=221883268902&categoryNo=125&proxyReferer=https:%2F%2Fwww.google.com%2F