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)}');
}
'플러터&어플리케이션' 카테고리의 다른 글
flutter stream 정리2 (0) | 2021.02.14 |
---|---|
flutter extension method (0) | 2021.02.06 |
flutter android studio live templates (0) | 2021.01.29 |
flutter 상속, 추상 클래스, 믹스인 (0) | 2021.01.28 |
flutter workmanager 패키지 적용 (0) | 2021.01.24 |