Oop 如何设计仅在第一次实例化时需要参数的单例类?
我有一个单例类,Oop 如何设计仅在第一次实例化时需要参数的单例类?,oop,design-patterns,singleton,Oop,Design Patterns,Singleton,我有一个单例类,ORMHelper,它只在第一次实例化时需要一个参数(FileReader) ORMHelper.getInstance(FileReader fr); 完成此操作后,singleton将解析文件并执行其内容。后续的实例化不需要文件读取器,因为解析已经完成 ORMHelper.getInstance(); 在getInstance()中有一个检查,以确定文件是否已被解析,否则会引发异常 有更好的方法吗?当getInstance(FileReader fr)时,我将存储有关Fi
ORMHelper
,它只在第一次实例化时需要一个参数(FileReader
)
ORMHelper.getInstance(FileReader fr);
完成此操作后,singleton将解析文件并执行其内容。后续的实例化不需要文件读取器
,因为解析已经完成
ORMHelper.getInstance();
在getInstance()
中有一个检查,以确定文件是否已被解析,否则会引发异常
有更好的方法吗?当getInstance(FileReader fr)第一次调用code>时,我将存储有关FileReader
参数的信息(例如:它引用的文件路径)。在对该方法的后续调用中,您可以检查参数(分别是其基础文件)是否等于第一次调用的参数。如果是,我不会抛出任何异常,只返回无参数的getInstance()
方法的值。如果参数不同,则应抛出异常
此外,您应该添加一个isInitialized()
方法,该方法返回一个布尔值,指示实例是否已经初始化。如果您想知道实例是否已初始化,那么使用
if (ORMHelper.isInitialized()) {
//...
}
而不是调用getInstance()
并检查是否引发异常