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

时间:2018-12-28 09:15:03

标签: constructor dart singleton factory factory-pattern

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

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;
         }

2 个答案:

答案 0 :(得分:4)

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

您可以更改

factory DbHelper(){ return _db;} 

DbHelper get singleton { return _db;}   

并使用

获取实例
var mySingletonReference = DbHelper.singleton;

代替

var mySingletonReference = DbHelper();

这只是一个偏好问题。

答案 1 :(得分:0)