FLUTTER
flutter - 싱글톤 패턴
춘행이
2023. 12. 8. 08:45
728x90
싱글톤 패턴은 오직 하나의 인스턴스 만을 생성하는 패턴이다
한번 인스턴스를 생성하면 여러개의 인스턴스를 만들어도 최초 생성한 인스턴스를 리턴하여 고정된 메모리 영역만을 사용하여 메모리 측면의 효율성이 좋다
비교를 위해 일반적인 클래스를 하나 생성하고
class BasicClass{
int num = 0;
}
void main() {
BasicClass basicClass = BasicClass();
BasicClass basicClass2 = BasicClass();
print('basicClass 1 : ${basicClass.num}');
print('basicClass 2 : ${basicClass2.num}');
basicClass.num++;
basicClass2.num++;
print('basicClass 1 : ${basicClass.num}');
print('basicClass 2 : ${basicClass2.num}');
}
결과를 보듯이 일반적으로 basicClass1 2 각각의 num이 증가해서 둘다 0에서 1로 증가한걸 볼수있다
이제 싱글톤 패턴을 보면 생성은 아래처럼 한다
class SingletonClass{
static final SingletonClass singletonClass = SingletonClass._internal();
factory SingletonClass()=>singletonClass;
SingletonClass._internal();
int num = 0;
}
static으로 singletonClass라는 변수에 전역에 접근할 수 있게 해준다 여기서 ._internal()은 private 생성자 형태로 없으면 public으로 자동생성된다
다음으로 factory를 사용하여 factory 생성자를 만들어주고 인스턴스가 아직 만들어지지 않았다면 생성 후 리턴하고 존재한다면 존재하는 인스턴스를 그대로 리턴한다
마지막으로 초기화를 해주면 완성이다
void main() {
SingletonClass singletonClass = SingletonClass();
SingletonClass singletonClass2 = SingletonClass();
singletonClass.num++;
singletonClass2.num++;
print(singletonClass.num);
print(singletonClass2.num);
}
이미 singletonClass가 있어서 singletonClass2를 만들어도 같은 인스턴스로 리턴되기 때문에 각각의 num이 올라가는것이 아닌 싱글톤의 num이 두번 ++되어서 2가 출력된다
728x90