Создание и использование синглтона enum - PullRequest
2 голосов
/ 06 января 2012

Скажем, у вас есть сингл с перечислением:

public enum Elvis {
    INSTANCE;

    private int age;

    private Elvis() { age = 42; }

    public int getAge() { return age; }

    public void leaveTheBuilding() { System.out.println("I'm outta here."); }
}

Вопрос: как вы тогда его используете?Это так:

int a = Elvis.INSTANCE.getAge();
Elvis.INSTANCE.leaveTheBuilding();
// and so on, using Elvis.INSTANCE

или предпочтительнее создать его "явно", а затем использовать этот экземпляр, например так:

Elvis elvis = Elvis.INSTANCE;
int a = elvis.getAge();
elvis.leaveTheBuilding();
// and so on, using elvis

Я испытываю желание использовать последнийчтобы избежать повсеместного уродливого обозначения .INSTANCE.Но есть ли недостаток для этого?(Помимо одной дополнительной строки кода для создания экземпляра.)

Ответы [ 2 ]

4 голосов
/ 06 января 2012

Это не имеет значения.Один использует локальную переменную, а другой нет.Используйте то, что вы считаете наиболее читабельным.

2 голосов
/ 06 января 2012

Мне кажется, что вы можете лучше использовать статический класс в этом случае:

public class Elvis {
  private static int age = 42;

  private Elvis() {}

  public static int getAge() { return age; }

  public static void leaveTheBuilding() {
    System.out.println("I'm outta here.");
  }
}

А затем выполните:

int a = Elvis.getAge();
Elvis.leaveTheBuilding();
// etc.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...