(Untitled)

Jun 22, 2008 23:56

Этот момент, лично мне, кажется, мягко говоря, спорным.

As of release 1.5, there is a third approach to implementing singletons. Simply
make an enum type with one element:

// Enum singleton - the preferred approach
public enum Elvis {
INSTANCE;
public void leaveTheBuilding() { ... }
}
This approach is functionally equivalent to the public ( Read more... )

effective java

Leave a comment

Comments 7

ex_juan_gan June 23 2008, 06:21:19 UTC
Надо подумать, зачем бы это понадобился такой трюк. Холдер класс сейчас стал как бы мировым стандартом.

Reply

joppux July 3 2008, 10:02:12 UTC
Чтобы при де-сериализации не создался второй объект ("even in the face of sophisticated
serialization or reflection attacks")

Reply

upstartn July 3 2008, 14:41:50 UTC
Для этого нормально использовать readRelove()

Reply


(The comment has been removed)

upstartn June 23 2008, 07:52:33 UTC
Иная простота -- хуже воровства :)

Аналог методов foo() и bar().

Reply


jdevelop June 25 2008, 20:35:51 UTC
по-моему есть хорошее правило - используй инстрУмент по назначению

назначение енумов, с моей точки зрения, ну никак не держать синглтоны, тем более что нормальной lazy initialization оно все равно не умеет

Reply


flings_insole September 28 2008, 23:15:28 UTC
Очень понравился ваш ЖЖ, я вас зафренжу и было бы круто если бы вы ответили взаимно;)

Reply


anonymous October 7 2008, 00:23:17 UTC
Hi Alex,
Your approach from what i see is not safe in multi threaded environment, plus you are doing eager initialization.

or am i missing something?

Single-element enum type is final, and is safe against reflection attacks.

Reply


Leave a comment

Up