객체의 인스턴스가 오직 하나만 생성되는 것,
즉 여러개의 생성자를 호출 하더라도 실제로 생성되는 인스턴스는 하나이다
class Singleton {
Singleton._privateConstructor();
static final Singleton _instance = Singleton._privateConstructor();
factory Singleton() {
return _instance;
}
}
static
변수 또는 메서드가 인스턴스에 귀속되는 것이 아닌 클래스에 귀속되는 것
factroy
Dart에서 제공하는 생성자
반환값이 있어 새로운 인스턴스의 생성이 가능
Singleton._privateConstructor();
static final Singleton _instance = Singleton._privateConstructor();
Singleton._privateConstructor();생성자를 선언
빈 생성자를 선언해주는 이유는 Dart에서 생성자가 없을 경우 자동으로 Public한 생성자를 만듬
이를 막기 위해 빈 생성자를 선언
static final Singleton _instance = Singleton._privateConstructor();생성자를 호출해 인스턴스를 변수에 할당
class Singleton {
// Private한 생성자 생성
Singleton._privateConstructor();
// 생성자를 호출하고 반환된 Singleton 인스턴스를 _instance 변수에 할당
static final Singleton _instance = Singleton._privateConstructor();
// Singleton() 호출시에 _instance 변수를 반환
factory Singleton() {
return _instance;
}
}
결과적으로 Singleton();을 호출 할 때 마다 factory 생성자에서 같은 인스턴스가 반환되는 패턴