首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用反射打破单例模式的论点是否切合实际?

用反射打破单例模式的论点是否切合实际?
EN

Stack Overflow用户
提问于 2020-08-12 02:19:14
回答 1查看 71关注 0票数 1

我了解了要通过枚举实现的SINGLETON,这样它也保留了针对反射的单例特性。

是否有一个实际的工业/实时场景,在那里可以发生这样的事情?

我的理解是不。

当所有代码都在我身边时,我为什么会在我的代码中发生这样的情况呢?

相反,这样的代码实践对于那些能够访问代码存储库的人来说是可见的,所以它不会跳过眼睛!

要求理解,如果我错过了某种视角,这是可能发生的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-12 05:06:12

如果您是在问是否有可能以其他方式破坏单个实例,那么可以:

  • 您可以使用反射来访问私有字段
  • 您可以使用反射更新最终字段。

有实际意义吗?这取决于你所说的实际意义。

这会在实践中发生吗?是。

我们不能列举某人可能需要(或选择)做这样一件事的原因。但是,假设您有一些迫切的理由来更改单例的值,而您已经丢失了所有的源代码。(是的。它会发生的!)或者假设你一开始就没有源代码。

当所有代码都在我身边时,为什么在我的代码中会发生这样的事情发生在任何单例类上。

如果您有源代码,以及修改和重新编译源代码的自由,那么使用反射破坏单个程序是个坏主意。如果有必要(出于语用上的原因)打破单例的不变量,那么最好修改API,以便清楚您要做什么以及为什么要做。

相反,这样的代码实践对那些能够访问代码存储库的人来说是可见的,所以它不会跳过眼睛!

仅仅因为有人有权限并不意味着他们会费心去看。仅仅因为他们看上去并不意味着他们会看到。(有一些方法可以隐藏在应用程序代码库中进行可疑操作的代码。)

无论如何,重点是这种事情是有可能的一些版本的单例模式(而不是其他),任何可能发生的事情,如果情况允许或需要它。

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

https://stackoverflow.com/questions/63368819

复制
相关文章

相似问题

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