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)
不需要使用工厂构造函数。工厂构造函数在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)
这只是一个偏好问题。
| 归档时间: |
|
| 查看次数: |
3466 次 |
| 最近记录: |