首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计一个只在第一次实例化时需要参数的单例类?

如何设计一个只在第一次实例化时需要参数的单例类?
EN

Stack Overflow用户
提问于 2015-01-31 16:49:57
回答 1查看 39关注 0票数 0

我有一个单例类ORMHelper,它只在第一次实例化时需要一个参数(FileReader)。

代码语言:javascript
运行
复制
ORMHelper.getInstance(FileReader fr);

完成此操作后,单例将解析该文件并执行其工作。后续的实例化不需要FileReader,因为解析已经完成。

代码语言:javascript
运行
复制
ORMHelper.getInstance();

getInstance()中有一个检查,以确定文件是否已经被解析,否则它会抛出一个异常。

有没有更好的方法来做这件事?

EN

回答 1

Stack Overflow用户

发布于 2015-01-31 17:34:59

当第一次调用getInstance(FileReader fr);时,我会存储有关FileReader参数的信息(例如:它引用的文件路径)。在随后对此方法的调用中,您可以检查参数(分别是其底层文件)是否等于第一次调用的参数。如果是,我不会抛出任何异常,而只是返回无参数getInstance()方法的值。如果参数不同,你应该抛出一个异常。

此外,您应该添加一个isInitialized()方法,该方法返回一个布尔值,指示实例是否已经初始化。如果您想知道实例是否已初始化,可以使用以下命令进行检查

代码语言:javascript
运行
复制
if (ORMHelper.isInitialized()) {
  //...
}

而不是调用getInstance()并检查是否抛出异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28249831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档