Это скорее ответ на ваш комментарий / уточнение к ответу кц. Неужели настоящая проблема заключается не в том, чтобы использовать шаблон Singleton, а в том, чтобы вместо него определить схему точек расширения затмения (равноденствия), которая позволяет вносить одиночный код?
Я думаю, этого нельзя сделать, потому что каждый раз, когда вы вызываете IConfigurationElement.createExecutableExtension, вы создаете новый экземпляр. Это совершенно несовместимо с вашими требованиями к синглтону. И поэтому вам нужен общедоступный конструктор по умолчанию, чтобы каждый мог создавать экземпляры.
Если вы не можете изменить определение точки расширения, чтобы плагины добавляли ModelFactory, а не модель, как
public interface ModelFactory {
public Model getModelInstance();
}
Таким образом, пользователь расширения создает экземпляр ModelFactory и использует его для получения синглтона.
Если я угадала неправильно, оставьте комментарий и я удалю ответ;)