Шаблон проектирования Singleton и предотвращение клонирования

Во многих статьях, которые я читал в сети о шаблоне проектирования Singleton, упоминается, что класс должен переопределять метод clone () и в нем выдавать исключение CloneNotSupported. Действительно ли это необходимо?

Метод clone () по умолчанию защищен, поэтому ни один класс (кроме тех, что находятся в том же пакете) не сможет вызвать его в этом экземпляре Singleton. Кроме того, если этот синглтон не реализует Cloneable, то даже если этот метод вызывается, он выдаст исключение во время выполнения. Кроме того, поскольку конструктор является частным, мы не сможем создать его подкласс и, таким образом, разрешить его клонирование. Так следует ли мне по-прежнему применять этот совет для моих классов синглтонов?

РЕДАКТИРОВАТЬ: Просто для пояснения: я не ищу наилучший способ реализации синглтона. Я просто спрашиваю о действительности упомянутого выше совета относительно «нормального» шаблона Singleton (а не Singleton на основе Enum).

25
задан shrini1000 16 February 2012 в 14:45
поделиться