如何使用工厂构造函数在 Dart 中实现单例模式?

Sal*_*ma. 3 singleton constructor factory factory-pattern dart

我正在尝试在数据库帮助程序类中实现单例模式,但是,我似乎无法理解工厂构造函数的用途以及是否有使用它的替代方法。

class DbHelper {

         final String tblName ='';
         final String clmnName ='';
         final String clmnPass='';

         DbHelper._constr();
         static final DbHelper _db = new DbHelper._constr();

         factory DbHelper(){ return _db;}  

         Database _mydb;
         Future<Database> get mydb async{

         initDb() {
          if(_mydb != null)
          {
              return _mydb;
          }
          _mydb = await  initDb();
          return _mydb;
         }
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 5

不需要使用工厂构造函数。工厂构造函数在new还不是可选的时候很方便,因为它new MyClass()适用于构造函数每次都返回一个新实例或类返回缓存实例的类。了解对象的实际创建方式和时间不是调用者的责任。

你可以改变

factory DbHelper(){ return _db;} 
Run Code Online (Sandbox Code Playgroud)

DbHelper get singleton { return _db;}   
Run Code Online (Sandbox Code Playgroud)

并使用获取实例

var mySingletonReference = DbHelper.singleton;
Run Code Online (Sandbox Code Playgroud)

代替

var mySingletonReference = DbHelper();
Run Code Online (Sandbox Code Playgroud)

这只是一个偏好问题。