用 REFLECTION 打破 SINGLETON 模式的论点是否实用?

Is the argument of breaking SINGLETON pattern with REFLECTION practical?

我了解到 SINGLETON 是通过枚举来实现的,因此,它也保留了针对 反射 的单例性质。

能否有一个实际的 industry/realTime 场景,让这种事情发生?

我的理解是NO

当所有代码都在我身边时,为什么我的代码中任何一个单身人士都会发生这样的事情class。

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

要求理解,如果我遗漏了一些观点,这实际上可能会发生!

如果您问是否可能打破以其他方式实现的单例,那么是的,这是可能的:

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

实用吗?好吧,这取决于你所说的实用。

在实践中会发生吗?是的

我们无法列举某人可能需要(或选择)做这样的事情的原因。但是假设您有一些紧迫的理由要更改单例的值,并且您丢失了所有源代码。 (是的。它发生了!)或者假设您一开始就没有源代码。

When all the code is with me, why will I have such a thing happen to any singleton class at my code.

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

Rather, such code practice, would be visible to those having access to code repository, so it wont skip the eyes !

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


无论如何,关键是对于某些版本的单例模式(而不是其他版本),这种事情是可能的,并且如果情况允许,任何可能的事情 都可能发生 或需要它。