Вы ищете экземпляр одноэлементного шаблона, который вы можете реализовать, объявив ваш конструктор частным и сохранив статическую ссылочную переменную, инициализированную в геттере.Что-то вроде:
private static Department hr = null;
private Department() {
}
public static synchronized Department getHRInstance() {
if (null == hr) {
hr = new Department();
}
return hr;
}
из остальной части вашего кода вы можете вызвать Department.getHRDepartment()
и аналогично для административного отдела, который просто отображает вторую статическую переменную.(Для более чем 2 синглетов вам может потребоваться использовать карту для хранения экземпляров или использовать класс Enum
для определения синглетонов.)
Единственный экземпляр имеет недостаток, заключающийся в том, что внедрение зависимостей трудно осуществить.затрудняет или делает невозможным создание тестов JUnit.Для большинства используемых одноэлементных шаблонов на самом деле лучше инициализировать «одноэлементные» экземпляры при инициализации приложения и передавать их классам, использующим их, передавая их через конструктор или создавая фабрику объектов, которая передает ссылки на одноэлементные файлы после создания своего объекта.экземпляры.