Единственный объект класса в Java
Singleton - класс, у которого в программе существует не больше одного объекта. Так оформляют общий журнал, настройки или счётчик, когда несколько независимых копий сломали бы логику.
Экземпляр хранят в private static поле,
конструктор делают private, а снаружи отдают
ссылку через статический метод getInstance():
class PostRegistry {
private static final PostRegistry INSTANCE = new PostRegistry();
private int total = 0;
private PostRegistry() {
}
static PostRegistry getInstance() {
return INSTANCE;
}
void register(String title) {
total++;
}
int count() {
return total;
}
}
Возьмем единственный экземпляр реестра и проверим равенство ссылок:
PostRegistry a = PostRegistry.getInstance();
PostRegistry b = PostRegistry.getInstance();
a.register("News");
System.out.println(b.count());
System.out.println(a == b);
Сравнение a == b даёт true: обе
переменные указывают на один и тот же объект. Состояние,
изменённое через a, видно через b.
Сделайте singleton EmployeeDirectory с методом
add(String name) и size(). Добавьте
два имени через разные ссылки на
getInstance() и выведите size().