Как реализовать шаблон Singleton в Dart, используя фабричные конструкторы? - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь реализовать шаблон синглтона в вспомогательном классе базы данных, но я не могу понять цель конструктора фабрики и есть ли альтернативный метод для его использования.

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 голосов
/ 28 декабря 2018
0 голосов
/ 28 декабря 2018

Нет необходимости использовать фабричный конструктор.Конструктор фабрики был удобен, когда new еще не был необязательным, потому что тогда он new MyClass() работал для классов, где конструктор каждый раз возвращал новый экземпляр или когда класс возвращал кэшированный экземпляр.Вы не должны были знать, как и когда объект был создан.

Вы можете изменить

factory DbHelper(){ return _db;} 

на

DbHelper get singleton { return _db;}   

и получить экземпляр, используя

var mySingletonReference = DbHelper.singleton;

вместо

var mySingletonReference = DbHelper();

Это просто вопрос предпочтений.

...