싱글톤(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 |