В качестве альтернативы синглтону вы можете взглянуть на шаблон моностата . Затем создание экземпляра вашего класса больше не является проблемой, и вам не нужно беспокоиться о любом перечисленных вами сценариях.
В шаблоне monostate все поля в вашем классе static
. Это означает, что все экземпляры класса имеют одно и то же состояние, как с одним синглоном. Более того, этот факт прозрачен для вызывающих; им не нужно знать о специальных методах, таких как getInstance
, они просто создают экземпляры и работают с ними.
Но, как и при использовании singleton, это форма скрытого глобального состояния; который очень плохой .