싱글톤 패턴 (singleton-pattern)
소프트웨어 디자인 패턴에서 싱글톤 패턴을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글톤 패턴이라고 한다.
class Test {
final String data;
Test({this.data});
factory Test.fromJson(Map<String, dynamic> json) {
return Test(
data: json['data'],
);
}
}
factory는 '클래스와 같은 타입의 인스턴스' 또는 '메서드를 구현하는 인스턴스'를 반환해야 한다. 이렇게 생성된 인스턴스는 기존에 생성된 인스턴스가 아니라면 새롭게 생성되고, 기존 인스턴스가 있다면 기존 것을 반환한다.
class Singleton {
static final Singleton _instance = Singleton._internal();
var data;
factory Singleton() {
//기존에 생성된 인스턴스가 아니라면 새롭게 생성되고, 기존 인스턴스가 있다면 기존 것을 반환한다.
return _instance;
}
Singleton._internal() {
// 초기화 코드
data = 'start';
}
void test() {
data = 'test';
}
}
//--
late Singleton singleton
//---------
initState() {
//factory 생성자 호출
singleton = Singleton();
}