Лучший синглтон-паттерн со времен Java 5 - PullRequest
3 голосов
/ 23 апреля 2011

Начиная с Java 5 говорят, что лучший способ создания синглтона - это одноэлементный тип enum.

Пример:

public enum SuperSingleton implements Zooma{
    INSTANCE;

    /**
     */
    public void fightTheBattle(){
        System.out.println("I am fighting the battle!!!");
    }

    @Override
    public void runningWild() {
        //This is method implemented from the Zooma interface.      
    }
}

Согласно Джошуа Блоху, одиночный-элемент типа enum singleton является;

  • более кратким
  • предоставляет механизм сериализации бесплатно
  • и обеспечивает железную оболочку для множественных экземпляров.

Я вижу, как он более лаконичен и как он обеспечивает железную защиту от множественных экземпляров, но как он предоставляет механизм сериализации бесплатно?

Это то, что получает синглтон?быть перечислением?

Ответы [ 3 ]

3 голосов
/ 23 апреля 2011

Да, все перечисления расширены от Enum класса , который реализует Serializable.

1 голос
/ 23 апреля 2011

Я не уверен на 100%, но я думаю, что если вы десериализуете сериализованный синглтон больше, чем однажды, у вас может получиться более одного экземпляра.Экземпляр enum всегда будет оставаться одиночным.

Таким образом, вы получаете «больше сериализации», чем то, что вы получаете от простой реализации сериализации.

1 голос
/ 23 апреля 2011
...