Firebase 强制API用户实现静态方法的选项有哪些?
我目前正在使用BLoC模式来实现firebase/firestore功能。实现模型、实体(基本上是数据库持有的模型)和处理程序请求的存储库似乎很常见 要将模型转换为实体,反之亦然,模型需要使用Firebase 强制API用户实现静态方法的选项有哪些?,firebase,dart,google-cloud-firestore,Firebase,Dart,Google Cloud Firestore,我目前正在使用BLoC模式来实现firebase/firestore功能。实现模型、实体(基本上是数据库持有的模型)和处理程序请求的存储库似乎很常见 要将模型转换为实体,反之亦然,模型需要使用toEntity和fromtentity方法。我想让我的班级看起来像这样: @immutable abstract class DatabaseModel { final id; DatabaseEntity toEntity(); DatabaseModel({@required this.
toEntity
和fromtentity
方法。我想让我的班级看起来像这样:
@immutable
abstract class DatabaseModel {
final id;
DatabaseEntity toEntity();
DatabaseModel({@required this.id});
static DatabaseModel fromEntity(DatabaseEntity entity);
}
abstract class DatabaseModel {
final id;
DatabaseEntity toEntity();
DatabaseModel({@required this.id});
static DatabaseModel createFromEntity(DatabaseEntity entity, DatabaseModel instance) {
return instance.fromEntity(entity);
}
DatabaseModel fromEntity(DatabaseEntity entity);
}
然而,这是不可能的。Dart不允许没有函数体的静态方法,如中所述,因为静态方法不会以任何方式继承
我考虑将fromtentity
方法实现为DatabaseModel
模型的成员方法,并使用一个调用成员方法的附加静态方法,如下所示:
@immutable
abstract class DatabaseModel {
final id;
DatabaseEntity toEntity();
DatabaseModel({@required this.id});
static DatabaseModel fromEntity(DatabaseEntity entity);
}
abstract class DatabaseModel {
final id;
DatabaseEntity toEntity();
DatabaseModel({@required this.id});
static DatabaseModel createFromEntity(DatabaseEntity entity, DatabaseModel instance) {
return instance.fromEntity(entity);
}
DatabaseModel fromEntity(DatabaseEntity entity);
}
但由于以下缺点,我决定不使用这种方法:
@不可变的
类YouTubeComment
的对象会像这样实例化-DatabaseModel.createFromEntity(entity,YouTubeComment())
李>