궁금증
Flutter에서 영구적으로 기기에 데이터를 저장하기 위해 SharedPreferences 패키지를 사용한다.
SharedPreferences를 사용할 때 인스턴스를 따로 생성하지 않고, getInstance()를 사용하는데 그 이유가 궁금했다.
해답
그 이유는 Singleton 디자인 패턴을 따르기 때문이었다.
<네이버 지식백과>
싱글톤 디자인 패턴 : "특정 클래스의 객체가 오직 한 개만 존재하도록 보장한다. 즉 클래스의 객체를 하나로 제한한다."
그럼, 클래스의 객체를 하나로 제한하는 이유는 무엇일까?
위의 예제에서, 여러 PC가 프린터라는 자원 하나를 공유하는 상황으로 설명한다.
동시에 여러PC에서 프린트하려고하는 경우, 여러개의 요청이 동시에 처리되지 않고 하나씩 처리해야하기 때문이다.
SharedPreferences의 경우를 생각해보면, 다수의 인스턴스가 존재할 때, 여러 저장요청을 처리하는데 혼선이 오기 때문이 아닐까 싶다.
cf) SharedPreferences에서 set은 비동기인데, get은 왜 비동기가 아닐까 궁금했다.
In order to make preference lookup via the get* methods synchronous, shared_preferences uses a cache on the Dart side, which is normally only updated by the set* methods.
get 메소드는 캐시를 사용하기 때문이라고 한다.
'Flutter' 카테고리의 다른 글
Flutter 플러터 앱 출시 후 인터넷 안되는 경우 (에뮬레이터는 잘 됨) (0) | 2023.08.17 |
---|---|
Flutter 플러터 AlertDialog pop error 처리 (0) | 2023.07.30 |
Flutter 로그인 기능 구현 (JWT, Flutter Secure Storage) (0) | 2023.06.28 |
Flutter에서 WebRTC 사용하기(작성중) (0) | 2023.06.26 |
Flutter Error : Could not determine the dependencies of task (0) | 2023.06.13 |