【发布时间】:2020-09-02 05:42:23
【问题描述】:
这个私有构造函数有什么用,为什么我们在类下实例化它的对象。
DatabaseHelper._privateConstructor();
static final DatabaseHelper intance =DatabaseHelper._privateConstructor();
【问题讨论】:
标签: android flutter oop constructor instance
这个私有构造函数有什么用,为什么我们在类下实例化它的对象。
DatabaseHelper._privateConstructor();
static final DatabaseHelper intance =DatabaseHelper._privateConstructor();
【问题讨论】:
标签: android flutter oop constructor instance
一般来说,当我们不想多次实例化事物时,我们会使用私有构造函数。这让我们可以实现singleton 模式:
https://www.geeksforgeeks.org/singleton-design-pattern/
在这种情况下,我们不想要数据库的多个实例。因此,如果尚未实例化,它将实例化数据库,如果先前已实例化,它将返回数据库的现有实例。
【讨论】:
这是一个design pattern,称为singleton pattern。
它的主要目的是确保应用程序中只存在该类的一个实例。
为确保实现这一目的,该模式实现了具有严重缺点的技术。人们过度使用它,有时用它作为他们为什么在他们的程序中存在那些本来会被认为是糟糕设计的缺点的理由。它已成为一种反模式。见Why is Singleton considered an anti-pattern?。
【讨论】:
除了给出的答案外,它是Eager单例,因此一旦初始化类,实例也被初始化,甚至没有使用实例。但是它仍然只被实例化了一次。
【讨论】:
正如其他答案所述,它是单例模式。 Here's 一个解释更多的链接。
【讨论】: