Является ли это недостатком реализации Groovy шаблона Singleton?

Прямая реализация шаблона Singleton без использования метакласса:

class A{
    static final instance = new A()
    private A(){}

    static getInstance(){return instance}
} 

Почему частный конструктор не уважает Groovy? Хотя с помощью интуиции можно сказать, что это шаблон синглтона, в отличие от java, такая реализация не ограничивает программиста от создания нового экземпляра этого класса с использованием new A() выходит за рамки этого класса. Так не должно ли это рассматриваться как недостаток в его реализации?

2 ответа

Решение

Вы можете заменить код выше с:

@Singleton
class A{
} 

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

A singleton = A.instance

Это ошибка в текущей реализации Groovy, поэтому в Groovy нет ничего приватного. Посмотрите на его вопрос JIRA. Я также недавно написал небольшую статью об этом.

Другие вопросы по тегам