为什么应用程序只在需要时而不是在开始时创建数据库应用程序?



我有一个正在开发的应用程序。对数据管理器进行设置的调用如下所示:

public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new Japanese.MainPage();
}
public static DataManager DB
{
get
{
if (AS.dm == null)
{
AS.dm = new DataManager();
}
return AS.dm;
}
}
protected override void OnStart()
{
AS.GetSettings();
AS.selectedPhraseCount = AS.dm.GetTotalPhrasesCountForSelectedCategories();
}

换句话说,数据管理器是在第一次需要时设置的。

有人可以告诉我这样做是否有任何好处。在我看来,在onStart事件中调用 AS.dm = new DataManager()似乎更简单。

public partial class DataManager
{
protected static object locker = new object();
protected SQLiteConnection db1;
protected SQLiteConnection db2;
public DataManager()
{
db1 = DependencyService.Get<ISQLiteDB1>().GetConnection();
db2 = DependencyService.Get<ISQLiteDB2>().GetConnection();

你需要发布更多的代码(例如,dm 和 AS 在哪里声明?)才能绝对确定,但是这种使用私有构造函数进行静态声明的方法称为 Singleton 模式,旨在确保只有一个对象的实例(在您的情况下是 DataManager)可以存在。 查看此现有问题

但是,您的代码在 OnStart 中看起来有点奇怪,因为看起来您正在使用 dm 支持变量而不是 DM 属性引用数据管理器。

最新更新