https://dart.dev/guides/language/language-tour#factory-constructors
Use the factory keyword when implementing a constructor that doesn’t always create a new instance of its class. For example, a factory constructor might return an instance from a cache, or it might return an instance of a subtype. Another use case for factory constructors is initializing a final variable using logic that can’t be handled in the initializer list.
In the following example, the Logger factory constructor returns objects from a cache, and the Logger.fromJson factory constructor initializes a final variable from a JSON object.
새로운 인스턴스를 더 생성하지 않고 하나의 인스턴스를 생성해야 할 경우 팩토리 키워드를 사용해 구조체를 만드세요. 예를들어, 팩토리 구조체는 캐시로부터 인스턴스를 반환할 겁니다. 그게 아니면 하위유형의 인스턴스를 반환할 겁니다.(이건 무슨뜻인지 모르겠음)
또다른 팩토리 구조체의 사용법으로는 final변수를 로직을 이용해 초기화 하는 것입니다. 초기화 리스트에서 초기화하기 어려울 때.
https://stackoverflow.com/questions/60133252/what-is-the-purpose-of-a-factory-method-in-flutter-dart
class DBHelper{
static final DbHelper _dbHelper = DbHelper._internal();
DbHelper._internal();
factory DbHelper() => _dbHelper;
...
}
이 코드는 DB만들 때 쓰던 코드와 유사하다.
factory DbHelper() => _dbHelper;
DbHelper._internal();
private DBHelper(){ //자바일 경우 예시
return _dbHelper;
}
static final DbHelper _dbHelper = DbHelper._internal();