Многие статьи, которые я прочитал в Сети о шаблоне проектирования Singleton, отмечают, что класс должен переопределить метод clone() и в нем исключить исключение "CloneNotSupported". Это действительно необходимо?
Метод clone() по умолчанию защищен, поэтому ни один класс (кроме тех, что в одном пакете) не сможет вызвать его на этом экземпляре Singleton. Кроме того, если этот Singleton не реализует Cloneable, то даже если этот метод вызывается, он даст исключение во время выполнения. Кроме того, конструктор является закрытым, мы не сможем подклассифицировать его и тем самым обеспечить его клонирование. Так должен ли я продолжать этот совет для своих классов Singleton?
EDIT: Просто уточнить: я не ищу наилучший способ реализации Singleton. Я просто спрашиваю о правильности упомянутого выше совета, w.r.t "нормального" шаблона Singleton (а не Singleton на основе Enum).