¿Es posible superficial copiar un objeto de la clase Singleton?

Prabhat Gaur:

Utilizando el método clone, podemos conseguir muchas instancias de una clase que se ha hecho Singleton?

Además, es necesario escribir "implementos Cloneable" porque he aprendido que todos los objetos se extienden desde la clase de objeto y por lo tanto el objeto secundario llamando protegida clon () en otro niño de objetos no debería tener problemas de acceso

anatolii:

No va a suceder hasta que implemente Cloneablepor su Singleton (que es un anti-patrón, ya que contradice el propósito mismo de Singleton). Por lo tanto, sólo puede ocurrir si haces algo como esto:

SomeClass.java

class SomeClass implements Cloneable {
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

Singleton.java

class Singleton extends SomeClass {
    public static Singleton instance = new Singleton();
    private Singleton() {}
}

Main.java

class Main {
    public static void main(String[] args) throws CloneNotSupportedException {
        Singleton singleton1 = Singleton.instance;
        Singleton singleton2 = singleton1.clone();
        System.out.println("singleton1 : "
                       + singleton1.hashCode());
        System.out.println("singleton2 : "
                       + singleton2.hashCode()); 
    }
}    

Salida

singleton1: 445884362

singleton2: 1793329556

Incluso esto, en este caso, puede resolver este problema reemplazando cloneen Singletony lanzar una excepción.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=118440&siteId=1
Recomendado
Clasificación